在 MongoDB 中返回基於日期的查詢
Tahseen Tauseef
2023年1月30日
2022年5月13日
- 在 MongoDB 中使用日期範圍查詢
- 在 MongoDB 中查詢兩個日期之間的文件
- 在 MongoDB 中查詢特定日期之後的文件
- 在 MongoDB 中查詢特定日期之前的文件
- 在 MongoDB 中返回基於日期的查詢
- まとめ
在這篇 MongoDB 教程文章中,指出了基於日期返回查詢的問題。此外,詳細解釋瞭如何在 MongoDB 中使用日期範圍進行查詢。
在 MongoDB 中使用日期範圍查詢
本節將展示如何編寫 MongoDB 日期範圍查詢以基於時間戳獲取記錄。MongoDB 日期查詢的示例包括 MongoDB 日期大於或小於時間或日期等。
語法:
db.collection.find({
day: {
$gt: ISODate("2020-01-21"),
$lt: ISODate("2020-01-24")
}
})
此查詢返回集合中 day
欄位大於 2020-01-21
且小於 2020-01-24
的所有文件。
上面顯示的說明很容易理解。但是,這些說明之間存在細微差別。
你可以使用 $gte
表示大於或等於
。
gte = greater than or equal to i.e >=
$gt
表示大於
。
gt = greater than i.e >
$lte
用於小於或等於
。
lte = less than or equal to i.e <=
$lt
表示小於
。
lt = less than i.e <
以下資訊顯示瞭如何在實踐中將此語法與具有以下文件的集合資料一起使用:
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 中查詢特定日期之後的文件
你可以使用下面給出的以下查詢來查詢 day
欄位在特定日期之後的所有文件:
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 中查詢特定日期之前的文件
你可以使用下面給出的以下查詢來查詢 day
欄位在特定日期之前的所有文件:
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 中返回查詢的示例。
讓我們使用文件建立一個名為 data
的集合,以便更好地掌握概念。以下是構建包含記錄的集合的查詢:
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
命令將通過示例進行說明。
根據日期返回查詢也用程式碼片段說明。