Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Cách truy vấn theo ngày tháng trong MongoDB

Để thực hiện truy vấn dựa trên ngày tháng trong MongoDB, bạn sử dụng các toán tử so sánh như $gte, $lte, $gt, $lt kết hợp với ISODate.

Tạo collection và dữ liệu mẫu

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

Xem tất cả documents

> db.returnQueryFromDate.find().pretty();
{
    "_id" : ObjectId("5c8a57be9064dcd4a68b70e4"),
    "PassengerName" : "John",
    "PassengerAge" : 23,
    "PassengerArrivalTime" : ISODate("2018-03-10T14:45:56Z")
}
{
    "_id" : ObjectId("5c8a57bf9064dcd4a68b70e5"),
    "PassengerName" : "Larry",
    "PassengerAge" : 21,
    "PassengerArrivalTime" : ISODate("2018-05-19T11:10:23Z")
}
{
    "_id" : ObjectId("5c8a57bf9064dcd4a68b70e6"),
    "PassengerName" : "Mike",
    "PassengerAge" : 24,
    "PassengerArrivalTime" : ISODate("2018-08-25T16:40:12Z")
}
{
    "_id" : ObjectId("5c8a57bf9064dcd4a68b70e7"),
    "PassengerName" : "Carol",
    "PassengerAge" : 26,
    "PassengerArrivalTime" : ISODate("2019-01-29T09:45:10Z")
}

Truy vấn các record có ngày lớn hơn một giá trị cụ thể

Tìm các passenger có PassengerArrivalTime lớn hơn hoặc bằng 2018-05-19T11:10:23Z:

> db.returnQueryFromDate.find({"PassengerArrivalTime" : { $gte : new ISODate("2018-05-19T11:10:23Z") }}).pretty();
{
    "_id" : ObjectId("5c8a57bf9064dcd4a68b70e5"),
    "PassengerName" : "Larry",
    "PassengerAge" : 21,
    "PassengerArrivalTime" : ISODate("2018-05-19T11:10:23Z")
}
{
    "_id" : ObjectId("5c8a57bf9064dcd4a68b70e6"),
    "PassengerName" : "Mike",
    "PassengerAge" : 24,
    "PassengerArrivalTime" : ISODate("2018-08-25T16:40:12Z")
}
{
    "_id" : ObjectId("5c8a57bf9064dcd4a68b70e7"),
    "PassengerName" : "Carol",
    "PassengerAge" : 26,
    "PassengerArrivalTime" : ISODate("2019-01-29T09:45:10Z")
}

Các mẫu truy vấn ngày tháng thường dùng

Mục đíchCú pháp
Ngày trong khoảng{$gte: ISODate("start"), $lte: ISODate("end")}
Ngày trước một thời điểm{$lt: ISODate("2023-01-01")}
Ngày sau một thời điểm{$gt: ISODate("2023-01-01")}
Ngày chính xác{$eq: ISODate("2023-01-01")} hoặc trực tiếp ISODate