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

tổng của hai cột trong phương pháp tổng hợp

Sử dụng $facet giai đoạn đường ống để xử lý nhiều đường ống tổng hợp trong một giai đoạn duy nhất trên cùng một bộ tài liệu đầu vào. Trong trường hợp của bạn, bạn cần tổng hợp các số lượng riêng biệt, sau đó kết hợp hai kết quả và tính tổng cuối cùng.

Điều này có thể được chứng minh bằng cách chạy đường dẫn sau:

db.collection.aggregate([
    { "$match": { "userid": "123" } },
    {
        "$facet": {
            "groupByPage": [
                { "$unwind": "$page" },
                { 
                    "$group": {
                        "_id": "$page",
                        "count": { "$sum": 1 }
                    }
                }
            ],   
            "groupByNewPage": [
                { "$unwind": "$newpage" },
                { 
                    "$group": {
                        "_id": "$newpage",
                        "count": { "$sum": 1 }
                    }
                }
            ]
        }
    },
    { 
        "$project": {
            "pages": {
                "$concatArrays": ["$groupByPage", "$groupByNewPage"]
            }
        }
    },
    { "$unwind": "$pages" },
    { 
        "$group": {
            "_id": "$pages._id",
            "count": { "$sum": "$pages.count" }
        }
    },
    { "$sort": { "count": -1 } }
], function(error, data){
    if (error) {
        console.log(error);
    } else {
        console.log(data);
    }
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách cài đặt và cấu hình MongoDB trên Ubuntu

  2. Làm cách nào để lấy tất cả các tên trường của Tài liệu Mongoid?

  3. Lỗi Tornado:[Errno 24] Lỗi quá nhiều tệp đang mở

  4. Node Mongo Native - làm thế nào để biết khi nào con trỏ hết?

  5. Khi tạo người dùng quản trị đầu tiên trên mongdb cluster, gặp lỗi không thể thêm người dùng:không được ủy quyền trên quản trị viên để thực thi lệnh