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

nhóm theo ngày trong mongodb

Câu trả lời mới sử dụng khung tổng hợp Mongo

Sau khi câu hỏi này được hỏi và trả lời, 10gen đã phát hành Mongodb phiên bản 2.2 với khung tổng hợp, đây là cách tốt hơn để thực hiện loại truy vấn này. Truy vấn này hơi khó khăn vì bạn muốn nhóm theo ngày và các giá trị được lưu trữ là dấu thời gian, vì vậy bạn phải làm gì đó để chuyển đổi dấu thời gian thành ngày phù hợp. Đối với mục đích của ví dụ, tôi sẽ chỉ viết một truy vấn có được số lượng phù hợp.

db.col.aggregate(
   { $group: { _id: { $dayOfYear: "$date"},
               click: { $sum: 1 } } }
   )

Điều này sẽ trả về một cái gì đó như:

[
    {
        "_id" : 144,
        "click" : 165
    },
    {
        "_id" : 275,
        "click" : 12
    }
]

Bạn cần sử dụng $match để giới hạn truy vấn trong phạm vi ngày bạn quan tâm và $project để đổi tên _id đến date . Làm thế nào bạn chuyển đổi ngày trong năm trở lại một ngày được để lại như một bài tập cho người đọc. :-)

10gen có một biểu đồ chuyển đổi SQL to Mongo Aggregation tiện dụng đáng được đánh dấu. Ngoài ra còn có một bài viết cụ thể về các toán tử tổng hợp ngày.

Để có một chút huyền ảo hơn, bạn có thể sử dụng:

db.col.aggregate([
  { $group: {
      _id: {
        $add: [
         { $dayOfYear: "$date"}, 
         { $multiply: 
           [400, {$year: "$date"}]
         }
      ]},   
      click: { $sum: 1 },
      first: {$min: "$date"}
    }
  },
  { $sort: {_id: -1} },
  { $limit: 15 },
  { $project: { date: "$first", click: 1, _id: 0} }
])

sẽ giúp bạn có được 15 ngày gần nhất và trả lại một số ngày tháng trong vòng mỗi ngày trong date đồng ruộng. Ví dụ:

[
    {
        "click" : 431,
        "date" : ISODate("2013-05-11T02:33:45.526Z")
    },
    {
        "click" : 702,
        "date" : ISODate("2013-05-08T02:11:00.503Z")
    },
            ...
    {
        "click" : 814,
        "date" : ISODate("2013-04-25T00:41:45.046Z")
    }
]


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để tìm các chỉ mục không được sử dụng trong MongoDB?

  2. Mẹo lập kế hoạch lược đồ MongoDB

  3. MongoDB updateOne ()

  4. MongoDB Regex Tìm kiếm trên Giá trị Số nguyên

  5. Không thể nhận allowDiskUse:Đúng để làm việc với pymongo