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

Nhóm tổng hợp MongoDb theo ngày

db.foos.aggregate(
    [   
        {   $project : { day : {$substr: ["$TimeStamp", 0, 10] }}},        
        {   $group   : { _id : "$day",  number : { $sum : 1 }}},
        {   $sort    : { _id : 1 }}        
    ]
)

Nhóm theo ngày có thể được thực hiện theo hai bước trong khuôn khổ tổng hợp, cần thêm bước thứ ba để sắp xếp kết quả, nếu muốn sắp xếp:

  1. $project kết hợp với $substr lấy 10 ký tự đầu tiên (YYYY:MM:DD) của đối tượng ISODate từ mỗi tài liệu (kết quả là một tập hợp các tài liệu có các trường "_id" và "ngày");
  2. $group nhóm theo ngày, thêm (tổng hợp) số 1 cho mỗi tài liệu phù hợp;
  3. $sort tăng dần theo "_id", là ngày từ bước tổng hợp trước đó - đây là tùy chọn nếu muốn có kết quả được sắp xếp.

Giải pháp này không thể tận dụng các chỉ mục như db.twitter.ensureIndex( { TimeStamp: 1 } ) , bởi vì nó chuyển đổi đối tượng ISODate thành đối tượng chuỗi một cách nhanh chóng. Đối với các bộ sưu tập lớn (hàng triệu tài liệu), điều này có thể là một nút thắt về hiệu suất và nên sử dụng các phương pháp tiếp cận phức tạp hơn.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để tham gia nội bộ trong MongoDB?

  2. Xử lý MongoDB lỗi chèn trong Java

  3. MongoDB - Thả một cơ sở dữ liệu

  4. Mongoose sắp xếp theo trường phổ biến

  5. cố gắng hiển thị dữ liệu bằng ngọc bích từ mongodb