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

MongoDB - khóa tổng hợp nhóm với các trường lồng nhau

Trước tiên, bạn cần áp dụng mã $ unwind toán tử trên tất cả các mảng để bạn có thể thực hiện các phép tính tổng hợp với $ group nhà điều hành sau đó trong các giai đoạn đường ống. Cuối cùng, bạn sẽ kết thúc với một đường dẫn tổng hợp như thế này:

db.testing.aggregate([
    { "$unwind": "$Event_types" },
    { "$unwind": "$Event_types.events" },
    { "$unwind": "$Event_types.events.by" },
    { "$unwind": "$Event_types.events.by.countArray" },
    {
        "$group": {
            "_id": {
                "type": "$Event_types.type",
                "name": "$Event_types.events.eventName",
                "siteName": "$Event_types.events.by.siteName"
            },
            "total": { 
                "$sum": "$Event_types.events.by.countArray.value"
            }
        }
    },
    {
        "$project": {
            "_id": 0,
            "type": "$_id.type",
            "name": "$_id.name",
            "siteName": "$_id.siteName",
            "total": 1
        }
    }
]);

Đầu ra

/* 1 */
{
    "result" : [ 
        {
            "total" : 90,
            "type" : "Party",
            "name" : "After Party",
            "siteName" : "PostParty"
        }, 
        {
            "total" : 40,
            "type" : "Party",
            "name" : "After Party",
            "siteName" : "club8"
        }
    ],
    "ok" : 1
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Truy vấn song song cùng một tài liệu trong cùng một API trong mongoDB

  2. cách thực thi lệnh quản trị mongo từ java

  3. MongoDB có thể sử dụng một chỉ mục khi kiểm tra sự tồn tại của một trường có toán tử $ tồn tại không?

  4. MongoDB có thể hoạt động khi kích thước cơ sở dữ liệu lớn hơn RAM không?

  5. Tích hợp Node.js và Backbone.js