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

Chuỗi thời gian tổng hợp MongoDB

Bạn có thể tổng hợp thành:

  • $match các tài liệu cho ngày cụ thể.
  • Tạo $group$project các đối tượng trước khi truy vấn.
  • $group theo $hour , tích lũy tất cả các tài liệu mỗi giờ cố định trong một mảng. Giữ từng phút ở đâu đó trong tài liệu.
  • $project một tài liệu biến dưới dạng $setUnion của tất cả các tài liệu mỗi giờ.
  • $unwind các tài liệu.
  • $sort theo orders
  • $limit 10 hàng đầu tài liệu mà chúng tôi yêu cầu.

Mã:

var inputDate = new ISODate("2015-01-09T13:00:00Z");
var group = {};
var set = [];
for(var i=0;i<=60;i++){
    group[i] = {$push:{"doc":"$vals."+i,
                       "hour":"$_id.hour",
                       "min":{$literal:i}}};
    set.push("$"+i);
}
group["_id"] = {$hour:"$hour"};
var project = {"docs":{$setUnion:set}}

db.t.aggregate([
{$match:{"hour":{$lte:inputDate,$gte:inputDate}}},
{$group:group},
{$project:project},
{$unwind:"$docs"},
{$sort:{"docs.doc.orders":-1}},
{$limit:2},
{$project:{"_id":0,
           "hour":"$_id",
           "doc":"$docs.doc",
           "min":"$docs.min"}}
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Viết nhật ký MongoDB có đảm bảo độ bền không?

  2. cách lưu trữ dữ liệu đã xử lý từ hdfs bằng cách sử dụng mapReduce trong mongoDB dưới dạng đầu ra

  3. Không đồng bộ, Gọi lại, Đóng cửa, Ôi trời

  4. Chèn một giá trị tại một vị trí cụ thể trong một mảng trong MongoDB

  5. Nút này không được bắt đầu với tùy chọn replSet