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

Node.js + Mongoose.js Làm thế nào để nhận được tổng số đơn đặt hàng được đặt trong một tháng hoặc một tuần?

Nếu bạn chỉ muốn tổng số đơn đặt hàng trong một khoảng thời gian thì bạn có thể chỉ cần sử dụng truy vấn phạm vi vào ngày của mình bằng cách sử dụng $gte $lt toán tử kiểu:

var query = Model.find({ 
    "createdDate": { 
        "$gte": new Date("2014-05-21"), "$lte": new Date("2014-05-29")
    }
}).count()

query.exec(function(err, count) {

Và điều đó sẽ chỉ trả về số lượng nếu tài liệu được tìm thấy trong phạm vi đó.

Nếu bạn muốn tính tổng một giá trị từ bên trong tài liệu của mình hoặc thậm chí thực sự truy xuất một giá trị nào đó như "tổng hàng ngày" từ trong phạm vi ngày đó thì bạn có thể sử dụng khung tổng hợp để thực hiện việc này:

Model.aggregate([
    { "$match": {
        "$gte": new Date("2014-05-21"), "$lte": new Date("2014-05-29")
    }},
    { "$group": {
        "_id": { "$dayOfYear": "$createdDate" }
        "totalValue": { "$sum": "$orderTotal" }
    }}
],
function(err, result) {

Điều đó không chỉ sử dụng $sum toán tử để thêm các giá trị cho trường "orderTotal" của chúng tôi, nhưng cũng sử dụng tổng hợp ngày toán tử để nhóm trên tất cả các giá trị theo từng ngày trong phạm vi đã cho.

Nếu trường hợp cuối cùng đó là những gì bạn muốn, bạn có thể sử dụng các toán tử khác nhau ở đó để chia nhỏ các khoảng thời gian ngày khác nhau mà bạn muốn chứa trong kết quả của mình.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoosejs làm mới tài liệu

  2. MongoDB $ tanh

  3. không thể chạy vùng chứa mongoDb trong docker cho các cửa sổ sử dụng hệ thống tệp linux

  4. tự động tăng bằng cách sử dụng loopback.js và MongoDB

  5. Không thể tạo thư mục MongoDB / data / db trên macOS Catalina