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

Tổng hợp MongoDB trên một phạm vi

Bạn có thể sử dụng tính năng tổng hợp để nhóm theo bất kỳ thứ gì có thể được tính toán từ các tài liệu nguồn, miễn là bạn biết chính xác những gì bạn muốn làm.

Dựa trên nội dung tài liệu và kết quả mẫu của bạn, tôi đoán rằng bạn đang tính tổng theo khoảng thời gian hai ngày. Đây là cách bạn sẽ viết tổng hợp để xuất ra dữ liệu này trên dữ liệu mẫu của bạn:

var range1={$and:[{"$gte":["$date","2014-07-07"]},{$lte:["$date","2014-07-08"]}]}
var range2={$and:[{"$gte":["$date","2014-07-09"]},{$lte:["$date","2014-07-10"]}]}
db.range.aggregate(
    {$project:{
         dateRange:{$cond:{if:range1, then:"dateRange1",else:{$cond:{if:range2, then:"dateRange2", else:"NotInRange"}}}},
         value:1}
    }, 
    {$group:{_id:"$dateRange", sum:{$sum:"$value"}}}
)
{ "_id" : "dateRange2", "sum" : 45 }
{ "_id" : "dateRange1", "sum" : 49 }

Thay thế ngày của bạn cho các chuỗi trong phạm vi1 và phạm vi2 và tùy chọn, bạn có thể lọc trước khi bắt đầu chỉ thao tác trên các tài liệu đã có trong phạm vi đầy đủ mà bạn đang tổng hợp.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để lồng một lời hứa bên trong một hàm hứa hẹn khác trong node.js?

  2. MongoDB $ push so với $ addToSet:Sự khác biệt là gì?

  3. mongodb:cách cập nhật phần tử mảng theo số chỉ mục

  4. Cách tạo lược đồ Mongoose từ JSON

  5. return Model.create (arr) .exec () không hoạt động trong mongoose