MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB tìm so sánh truy vấn với CurrentDate

Theo câu hỏi của bạn bạn muốn tìm nạp tài liệu ngày hiện tại từ bộ sưu tập mongodb . Trong trình bao mongoDB khi bạn nhập new Date() nó cung cấp cho bạn ngày hiện tại cùng với thời gian và giá trị này luôn thay đổi khi bạn chạy cùng một new Date() vì vậy có thể truy vấn của bạn như thế này:

db.collectionName.find({"start_date":new Date()}).pretty()

Tuy nhiên, tôi nghĩ rằng truy vấn này trả về những tài liệu sẽ xuất hiện trong bộ sưu tập của bạn nhưng có cùng Date hiện tại giá trị có thể không được trình bày trong tài liệu của bạn VÌ trường hợp này bạn nên sử dụng sau

db.collectionName.find({"start_date":{"$lte":new Date()}}).pretty()

Hoặc

db.collectionName.find({"start_date":{"$gte":new Date()}}).pretty()

Trong một số trường hợp, Nếu bạn muốn tìm đối sánh chính xác với year,month,day thì bạn nên sử dụng tổng hợp với $ năm, $ tháng, $ dayOfMonth trong $ dự án như thế này:

db.collectionName.aggregate({
  "$project": {
    "year": {
      "$year": "$date"
    },
    "month": {
      "$month": "$date"
    },
    "day": {
      "$dayOfMonth": "$date"
    }
  }
}, {
  "$match": {
    "year": new Date().getFullYear(),
    "month": new Date().getMonth() + 1, //because January starts with 0
    "day": new Date().getDate()
  }
})

Trong truy vấn tổng hợp ở trên sẽ trả về những tài liệu khớp với ngày hiện tại như year,month,day của ngày hiện tại. Ngoài ra, bạn thay thế $match như

var currentDate = new Date()

 {
  "$match": {
    "year": currentDate.getFullYear(),
    "month": currentDate.getMonth() + 1, //because January starts with 0
    "day": currentDate.getDate()
  }
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongod, mac os x - rlimits warning

  2. MongoDB - Khung tổng hợp (Tổng số)

  3. MongoDB và CodeIgniter

  4. MongoDB chỉ lấy các tài liệu con phù hợp từ một tài liệu có c #

  5. lỗi mongoDB:Lỗi:không kết nối được với [localhost:27017]