迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MongoDB >

在 MongoDB 中查找两个日期之间的对象

作者:迹忆客 最近更新:2023/04/20 浏览次数:

在本文中,简要讨论了在两个日期之间查找对象的问题。 此外,用于此目的的运算符 $gte、$lte、$gt 和 $lt 也有简要的详细说明。


在 MongoDB 中查询日期范围

本节将引导您编写 MongoDB 日期范围查询以根据时间戳或日期范围检索数据。 例如,MongoDB 中的日期查询是大于或小于时间或日期的日期。

要使用日期范围在 MongoDB 中执行查询,请使用下面描述的基本语法。

db.collection.find({
    day: {
        $gt: ISODate("2020-01-21"),
        $lt: ISODate("2020-01-24")
    }
})

此查询将返回集合中日期字段大于或等于 2020-01-21 但小于或等于 2020-01-24 的所有项目。 上面概述的步骤很简单。

但是,这些方向存在一些小的不一致。


MongoDB 中 $gt

语法:

{ field: { $gt: value } }

因为字段值大于(即 >)指定值,$gt 选择那些文档。

对于大多数数据类型,比较运算符仅在 BSON 类型与查询值的类型匹配时才对字段执行比较。 然而,MongoDB 的类型括号允许有限的跨 BSON 比较。

下面的示例使用库存集合。 这是将在下面所有示例中使用的示例数据库。

db.inventory.insertMany( [
   {
      "item": "nuts", "quantity": 31,
      "carrier": { "name": "import", "fee": 3 }
   },
   {
      "item": "screws", "quantity": 50,
      "carrier": { "name": "import", "fee": 4 }
   },
   {
      "item": "washers", "quantity": 11,
      "carrier": { "name": "import", "fee": 1 }
   }
] )

匹配文档字段

选择库存集合中数量大于 20 的所有文档。

db.inventory.find( { quantity: { $gt: 20 } } )

输出:

使用 gt 运算符

基于嵌入式文档字段执行更新

下面的示例根据与嵌入文档中的字段的 $gt 比较设置价格字段。

db.inventory.updateOne(
   { "carrier.fee": { $gt: 2 } }, { $set: { "price": 9.99 } }
)

输出:

使用 gt 运算符 2

updateOne() 函数检查名为 carrier 的嵌入式文档中的费用子字段。 第一份文件找到了一个大于 2 的费用值并设置了价格:9.99。

要在 carrier.fee 大于 2 时调整所有文档中价格字段的值,请使用 updateMany()


MongoDB 中 $gte

语法:

{ field: { $gte: value } }

$gte 选择字段值大于或等于(即>=)给定值(例如值)的文档。

对于大多数数据类型,比较运算符仅在 BSON 类型与查询值的类型匹配时才对字段执行比较。 然而,MongoDB 的类型括号允许有限的跨 BSON 比较。

匹配文档字段

选择库存集合中数量大于或等于 20 的所有文档。

db.inventory.find( { quantity: { $gte: 20 } } )

输出:

使用 gte 运算符

基于嵌入式文档字段执行更新

在以下示例中,价格字段是使用 $gte 与嵌入文档中的字段进行比较设置的。

db.inventory.updateMany(
   { "carrier.fee": { $gte: 2 } }, { $set: { "price": 9.99 } }
)

输出:

使用 gte 运算符 2

updateOne() 函数检查名为 carrier 的嵌入式文档中的费用子字段。 price:当 fee 的值大于或等于 2 时,每份文件加 9.99。

当 carrier.fee 大于 2 时,使用 updateOne() 仅在第一页设置价格字段的值。


MongoDB 中 $lt

语法:

{ field: { $lt: value } }

$lt 选择字段值小于(或等于)指定值的文档。

对于大多数数据类型,比较运算符仅在 BSON 类型与查询值的类型匹配时才对字段执行比较。 然而,MongoDB 的类型括号允许有限的跨 BSON 比较。

匹配文档字段

选择库存集合中数量小于 20 的所有文档。

db.inventory.find( { quantity: { $lt: 20 } } )

输出:

使用 lt 运算符

基于嵌入式文档字段执行更新

在以下示例中,价格字段将基于与嵌入文档中的字段的 $lt 比较来设置。

db.inventory.updateMany( { "carrier.fee": { $lt: 20 } }, { $set: { price: 9.99 } } )

输出:

使用 lt 运算符 2

updateOne() 函数检查名为 carrier 的嵌入式文档中的费用子字段。 当charge值小于2时,每条记录加price:9.99。

当 carrier.fee 小于 2 时,使用 updateOne() 仅在第一页设置价格字段的值。


MongoDB 中 $lte

语法:

{ field: { $lte: value } }

$lte 选择字段值小于或等于(即 =)指定值的文档。

对于大多数数据类型,比较运算符仅在 BSON 类型与查询值的类型匹配时才对字段执行比较。 然而,MongoDB 的类型括号允许有限的跨 BSON 比较。

匹配文档字段

考虑以下示例:

db.inventory.find( { quantity: { $lte: 20 } } )

此查询选择库存集合中数量字段值小于或等于 20 的所有条目。

输出:

使用 lte 运算符

基于嵌入式文档字段执行更新

在以下示例中,价格字段是使用 $lte 与嵌入文档中的字段进行比较设置的。

db.inventory.updateMany(
   { "carrier.fee": { $lte: 5 } }, { $set: { price: 9.99 } }
)

输出:

使用 lte 运算符 2

updateMany() 函数在名为 carrier 的嵌入式文档中查找费用子字段。 price:如果 fee 的值小于或等于 5,则将 9.99 添加到每个文件。

当 carrier.fee 小于或等于 5 时,使用 updateOne() 仅在第一页更改价格字段的值。

以下信息解释了如何使用随附的文档将此语法应用于数据集合。

db.data.insertOne({day: new Date("2022-01-20"), amount: 40})
db.data.insertOne({day: new Date("2022-01-21"), amount: 32})
db.data.insertOne({day: new Date("2022-01-22"), amount: 19})
db.data.insertOne({day: new Date("2022-01-23"), amount: 29})
db.data.insertOne({day: new Date("2022-01-24"), amount: 35})

在 MongoDB 中查找两个日期之间的文档

使用下面的查询来查找在两个日期之间具有日期字段的所有文档。

db.data.find({
    day: {
        $gt: ISODate("2020-01-21"),
        $lt: ISODate("2020-01-24")
    }
})

上面的查询返回以下文档,如下所示。

{ _id: ObjectId("618548bc7529c93ea0b41490"),
  day: 2020-01-22T00:00:00.000Z,
  amount: 19 }

{ _id: ObjectId("618548bc7529c93ea0b41491"),
  day: 2020-01-23T00:00:00.000Z,
  amount: 29 }

在 MongoDB 中查找特定日期后的文档

使用下面的查询查找日期字段设置为指定日期之后的日期的所有文档。

db.data.find({
    day: {
        $gt: ISODate("2020-01-22")
    }
})

上面的查询返回以下文档。

{ _id: ObjectId("618548bc7529c93ea0b41491"),
  day: 2020-01-23T00:00:00.000Z,
  amount: 29 }

{ _id: ObjectId("618548bc7529c93ea0b41492"),
  day: 2020-01-24T00:00:00.000Z,
  amount: 35 }

在 MongoDB 中查找特定日期之前的文档

使用下面的查询查找日期字段设置为特定日期之前的所有文档。

db.data.find({
    day: {
        $lt: ISODate("2020-01-22")
    }
})

上面的查询返回以下文档。

{ _id: ObjectId("618548bc7529c93ea0b4148e"),
  day: 2020-01-20T00:00:00.000Z,
  amount: 40 }

{ _id: ObjectId("618548bc7529c93ea0b4148f"),
  day: 2020-01-21T00:00:00.000Z,
  amount: 32 }

MongoDB中基于日期的比较

让我们看看如何使用 MongoDB 根据日期返回查询。

使用文档创建一个名为数据的集合以更好地理解这个想法。 以下是构建包含记录的集合的查询。

db.data.insertOne({"PassengerName":"John","PassengerAge":23,"PassengerArrivalTime":new ISODate("2018-03-10 14:45:56")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a57be9064dcd4a68b70e4")
}
db.data.insertOne({"PassengerName":"Larry","PassengerAge":21,"PassengerArrivalTime":new ISODate("2018-05-19 11:10:23")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a57bf9064dcd4a68b70e5")
}
db.data.insertOne({"PassengerName":"Mike","PassengerAge":24,"PassengerArrivalTime":new ISODate("2018-08-25 16:40:12")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8a57bf9064dcd4a68b70e6")
}
db.data.insertOne({"PassengerName":"Carol","PassengerAge":26,"PassengerArrivalTime":new ISODate("2019-01-29 09:45:10")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8a57bf9064dcd4a68b70e7")
}

使用 find() 函数,将选择集合中的所有文档。 以下是对此的查询。

db.data queryFromDate.find().pretty();

上面的查询将返回以下文档,如下面的屏幕截图所示。

Return query

以下是基于日期的返回查询。 创建日期在 2018-05-19T11:10:23Z 之后的记录将被称为:

> db.data queryFromDate.find({"PassengerArrivalTime" : { $gte : new ISODate("2018-05-19T11:10:23Z") }}).pretty();

此查询返回以下文档,如下面的屏幕截图所示。

Return query 1

因此,通过本文的帮助,用户了解了有关使用 Date() 方法的信息。 示例简要说明 $gte$lte 命令。

此外,还用代码片段说明了基于数据的返回查询。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

比较 MongoDB 中的字段

发布时间:2023/04/21 浏览次数:51 分类:MongoDB

在本文中,我们将了解如何比较 MongoDB 中的两个字段。 此外,我们将看到一个相关的示例和解释,以使主题更容易理解。

清除或删除 MongoDB 中的集合

发布时间:2023/04/21 浏览次数:147 分类:MongoDB

本篇文章将告诉大家如何删除 MongoDB 数据库中的集合以及删除 MongoDB 中的集合的不同方法。

MongoDB 截断集合

发布时间:2023/04/21 浏览次数:178 分类:MongoDB

可以根据需要选择两个选项之一来截断下面的集合。 在今天的文章中,我们将学习如何在 MongoDB 中截断集合。

删除 MongoDB 中的重复项

发布时间:2023/04/21 浏览次数:151 分类:MongoDB

在本文中,我们将了解如何删除 MongoDB 中的重复条目,并且我们还将看到一个带有适当解释的示例,以使主题更容易理解。

使用 NodeJS 检查 MongoDB 中是否存在集合

发布时间:2023/04/21 浏览次数:194 分类:MongoDB

在本文中,我们将检查 MongoDB 数据库中是否存在一个集合,并且我们还将查看与主题相关的示例,以使主题更容易理解。 为此,我们将使用 Node.js。

MongoDB 中的唯一索引

发布时间:2023/04/21 浏览次数:144 分类:MongoDB

在这篇教学文章中,您将了解唯一索引、它们是什么以及如何在 MongoDB 中使索引唯一。 此外,还简要详细地解释了使用户的电子邮件在 MongoDB 中唯一。

在 MongoDB 中创建索引

发布时间:2023/04/21 浏览次数:104 分类:MongoDB

索引有助于有效解决查询。 如果没有索引,MongoDB 必须遍历集合中的每个文档才能找到与查询匹配的文档。因此,在今天的文章中,我们将学习如何在 MongoDB 中创建索引。

MongoDB 中的稀疏索引

发布时间:2023/04/21 浏览次数:142 分类:MongoDB

在本文中,我们将讨论 MongoDB 中的稀疏索引。 此外,我们将提供一个相关示例并进行解释,以使该主题更容易理解。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便