MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Menggunakan $count Dalam Operasi addField di Agregasi MongoDB

Jumlah total akan selalu menjadi hasil satu dokumen sehingga Anda memerlukan $segi untuk menjalankan beberapa pipeline agregasi dan kemudian menggabungkan hasil. Katakanlah pipeline reguler Anda berisi $project sederhana dan Anda ingin menggabungkan hasilnya dengan $count . Anda dapat menjalankan agregasi di bawah ini:

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" } ]
            }
        }
    }
])

Setelah $facet tahap Anda akan mendapatkan satu dokumen seperti ini

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

Kemudian Anda harus menggunakan $unwind untuk mengubah array menjadi beberapa dokumen dan $replaceRoot dengan $mergeObjects untuk mempromosikan hasil pipeline reguler ke level root.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apakah ada perpustakaan seperti orm untuk mongodb di scala?

  2. Penyimpanan untuk jutaan gambar

  3. PyMongo Agregat cara mendapatkan executionStats

  4. Luwak menimpa dokumen daripada bidang `$set`

  5. Tambahkan bidang baru ke setiap dokumen dalam koleksi MongoDB