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

Truy vấn MongoDB lấy record ngày (ISODate) trong khoảng thời gian

Sử dụng $redact kết hợp $hour để lọc document theo giờ của trường ISODate. Tạo collection:

> db.demo178.insertOne({ "DueDate": new ISODate("2019-01-10T06:18:20.474Z") });
{ "acknowledged": true, "insertedId": ObjectId("5e397bd89e4f06af551997f5") }
> db.demo178.insertOne({ "DueDate": new ISODate("2020-11-10T18:05:11.474Z") });
{ "acknowledged": true, "insertedId": ObjectId("5e397bf39e4f06af551997f6") }
> db.demo178.insertOne({ "DueDate": new ISODate("2020-03-15T07:05:10.474Z") });
{ "acknowledged": true, "insertedId": ObjectId("5e397c039e4f06af551997f7") }
> db.demo178.insertOne({ "DueDate": new ISODate("2020-06-11T16:05:10.474Z") });
{ "acknowledged": true, "insertedId": ObjectId("5e397c0f9e4f06af551997f8") }

Hiển thị document.

Truy vấn aggregate $redact giữ document có giờ DueDate từ 6 đến 8 (gt 5 và lt 9):

> db.demo178.aggregate([{
  "$redact": {
    "$cond": {
      "if": {
        "$and": [
          { "$gt": [{ "$hour": "$DueDate" }, 5] },
          { "$lt": [{ "$hour": "$DueDate" }, 9] }
        ]
      },
      "then": "$$KEEP",
      "else": "$$PRUNE"
    }
  }
}])

Kết quả (2 document khớp giờ 6 và 7):

{
  "_id": ObjectId("5e397bd89e4f06af551997f5"),
  "DueDate": ISODate("2019-01-10T06:18:20.474Z")
}
{
  "_id": ObjectId("5e397c039e4f06af551997f7"),
  "DueDate": ISODate("2020-03-15T07:05:10.474Z")
}