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

Lấy kết quả MongoDB từ tháng trước

Lấy tháng hiện tại trừ 1 để truy vấn tháng trước. Tạo collection:

> db.findOneMonthAgoData.insertOne({"CustomerName":"Chris","PurchaseDate":new ISODate("2019-12-26")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e04e16c150ee0e76c06a04f") }
> db.findOneMonthAgoData.insertOne({"CustomerName":"David","PurchaseDate":new ISODate("2019-11-26")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e04e178150ee0e76c06a050") }
> db.findOneMonthAgoData.insertOne({"CustomerName":"Bob","PurchaseDate":new ISODate("2020-11-26")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e04e186150ee0e76c06a051") }

Hiển thị tài liệu:

> db.findOneMonthAgoData.find();

Truy vấn tháng trước (giả sử hiện tại 26/12/2019):

> monthData = new Date(); // ISODate("2019-12-26T16:43:04.283Z")
> monthData.setMonth(monthData.getMonth() - 1); // 1574786584283 (26/11/2019)
> db.findOneMonthAgoData.find({PurchaseDate: {$gte: monthData}});

Kết quả - Chris (26/12) và Bob (26/11/2020) vì >= 26/11/2019:

Lưu ý: Cách này dùng JavaScript Date ở client. Trong production, nên dùng aggregation $dateSubtract (MongoDB 5.0+) hoặc tính toán ngày đầu/cuối tháng phía ứng dụng để query chính xác tháng lịch.