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

Sử dụng $ count trong Hoạt động addField trong Tổng hợp MongoDB

Tổng số sẽ luôn là kết quả một tài liệu, vì vậy bạn cần $ facet để chạy các đường ống tổng hợp lẫn nhau và sau đó hợp nhất các kết quả. Giả sử đường dẫn thông thường của bạn chứa $project đơn giản và bạn muốn hợp nhất kết quả của nó với $count . Bạn có thể chạy tập hợp dưới đây:

db.col.aggregate([
    {
        $facet: {
            totalCount: [
                { $count: "value" }
            ],
            pipelineResults: [
                {
                    $project: { _id: 1 } // your regular aggregation pipeline here 
                }
            ]
        }
    },
    {
        $unwind: "$pipelineResults"
    },
    {
        $unwind: "$totalCount"
    },
    {
        $replaceRoot: {
            newRoot: {
                $mergeObjects: [ "$pipelineResults", { totalCount: "$totalCount.value" } ]
            }
        }
    }
])

Sau $facet bạn sẽ nhận được một tài liệu như thế này

{
    "totalCount" : [
        {
            "value" : 3
        }
    ],
    "pipelineResults" : [
        {
            "_id" : ObjectId("5b313241120e4bc08ce87e46")
        },
        //....
    ]
}

Sau đó, bạn phải sử dụng $ unwind để chuyển đổi mảng thành nhiều tài liệu và $ ReplaceRoot với $ mergeObjects để thúc đẩy các kết quả chuyển tiếp thường xuyên đến cấp cơ sở.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Di chuyển MongoDB sang DynamoDB, Phần 1

  2. Có thể truy vấn phạm vi băm của một khóa được lập chỉ mục được băm trong mongodb không?

  3. Làm thế nào để cài đặt php-mongo trên CentOS 5.3?

  4. Đầu ra của một luồng tệp được định hình là gì?

  5. Làm cách nào để sắp xếp chữ và số trong mongoDB?