MongoDB 中的日期比较
这篇 MongoDB 教学文章讨论了返回基于 Date 的查询的问题。 此外,如何在 MongoDB 中使用 Date Range 进行查询也有很好的教学。
在 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 与嵌入文档中字段的比较来设置价格字段。
db.inventory.updateOne(
{ "carrier.fee": { $gt: 2 } }, { $set: { "price": 9.99 } }
)
输出:
此 updateOne()
方法查找名为 carrier 的嵌入文档,其中包含费用子字段。 第一份文件发现费用的值大于 2; 它设定价格:9.99。
使用 updateMany()
更改 carrier.fee 大于 2 的所有文档中价格字段的值。
在 MongoDB 中使用 $gte
语法:
{ field: { $gte: value } }
$gte
选择字段值大于或等于(即 >=
)提供的值(例如值)的文档。 以下示例使用库存集合。
db.inventory.insertMany( [
{
"item": "nuts", "quantity": 31,
"carrier": { "name": "import", "fee": 3 }
},
{
"item": "bolts", "quantity": 51,
"carrier": { "name": "import", "fee": 4 }
},
{
"item": "washers", "quantity": 11,
"carrier": { "name": "import", "fee": 1 }
}
] )
应选择库存集合中数量大于或等于 20 的所有文档。
db.inventory.find( { quantity: { $gte: 20 } } )
输出:
价格字段在以下示例中设置,使用 $gte 与嵌入文档中的字段进行比较。
db.inventory.updateMany(
{ "carrier.fee": { $gte: 2 } }, { $set: { "price": 9.99 } }
)
输出:
在 MongoDB 中使用 $lt
句法:
{ field: { $lt: value } }
$lt
选择字段值小于(即 “
)提供的值的文档。 以下示例使用以前的清单集合。
选择库存集合中数量小于 20 的所有文档。
db.inventory.find( { quantity: { $lt: 20 } } )
输出:
下一个示例根据与嵌入文档中字段的 $lt 比较设置价格字段。
db.inventory.updateMany( { "carrier.fee": { $lt: 20 } }, { $set: { price: 9.99 } } )
输出:
在 MongoDB 中使用 $lte
句法:
{ field: { $lte: value } }
$lte
选择字段值小于或等于(即 =
)提供的值的文档。 以下示例使用以前的清单集合。
考虑以下示例。
db.inventory.find( { quantity: { $lte: 20 } } )
此查询返回库存集合中数量字段值小于或等于 20 的所有条目。
输出:
价格字段在以下示例中设置,使用 $lte 与嵌入文档中的字段进行比较。
db.inventory.updateMany(
{ "carrier.fee": { $lte: 5 } }, { $set: { price: 9.99 } }
)
输出:
下面的信息演示了如何使用以下文档将此语法应用于数据集。
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 中查找两个日期之间的文档
使用以下查询来发现在两个日期之间具有“day”字段的所有文档。
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();
输出:
以下是基于日期的返回查询。 创建日期在 2018-05-19T11:10:23Z 之后的记录将被退回。
> db.data queryFromDate.find({"PassengerArrivalTime" : { $gte : new ISODate("2018-05-19T11:10:23Z") }}).pretty();
输出:
我们通过这篇文章了解了如何使用 Date()
方法。 例子简单解释了$gte和$lte命令以及基于数据的返回查询。
相关文章
比较 MongoDB 中的字段
发布时间:2023/04/21 浏览次数:51 分类:MongoDB
-
在本文中,我们将了解如何比较 MongoDB 中的两个字段。 此外,我们将看到一个相关的示例和解释,以使主题更容易理解。
清除或删除 MongoDB 中的集合
发布时间:2023/04/21 浏览次数:147 分类:MongoDB
-
本篇文章将告诉大家如何删除 MongoDB 数据库中的集合以及删除 MongoDB 中的集合的不同方法。
向 MongoDB 集合中的每个文档添加新字段
发布时间:2023/04/21 浏览次数:107 分类:MongoDB
-
您将在这篇文章中了解 $set 和 $setOnInsert 操作。 此外,利用这两个运算符,快速描述了向 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 中的稀疏索引。 此外,我们将提供一个相关示例并进行解释,以使该主题更容易理解。