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

Làm cách nào để đếm các mục ngày riêng biệt trong trường dấu thời gian trong Mongoose / NodeJS?

Điều bạn muốn là sử dụng khung tổng hợp với aggregate() lệnh, ít nhất để tìm một ngày như bạn yêu cầu:

SomeSchema.aggregate(
    [
        { "$match": {
            "date": { 
                "$gte": new Date("2014-05-08"), "$lt": new Date("2014-05-09")
            }
        }},
        { "$group": {
            "_id": "$some_item",
            "count": { "$sum": 1 }
        }}
    ],
    function(err,result) {
        // do something with result

    }
);

Nếu bạn đang tìm kiếm cụ thể "số lượng" trong nhiều ngày thì bạn có thể làm như sau:

SomeSchema.aggregate(
    [
        { "$match": {
            "date": { 
                "$gte": new Date("2014-05-01"), "$lt": new Date("2014-06-01")
            }
        }},
        { "$group": {
            "_id": { 
                "year":  { "$year": "$date" },
                "month": { "$month": "$date" },
                "day":   { "$dayOfMonth": "$date" }
            }
            "count": { "$sum": 1 }
        }}
    ],
    function(err,result) {
        // do something with result

    }
);

Và điều đó cung cấp cho bạn nhóm "mỗi ngày". Tìm kiếm toán tử tổng hợp ngày trong tài liệu nếu bạn muốn hiểu thêm về vấn đề này.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tạo mô hình mongoose từ kết quả của truy vấn tinh gọn

  2. Tại sao triển khai java bson sử dụng trường inc 4 byte?

  3. Chú thích MockBean trong thử nghiệm Spring Boot gây ra NoUniqueBeanDefinitionException

  4. Lưu trữ một lược đồ JSON trong mongodb với spring

  5. Lựa chọn cơ sở dữ liệu tốt cho một ứng dụng .NET nhỏ là gì?