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

penjumlahan dua kolom dalam Metode Agregat

Gunakan $facet tahap pipeline untuk memproses beberapa pipeline agregasi dalam satu tahap pada kumpulan dokumen input yang sama. Dalam kasus Anda, Anda perlu menggabungkan hitungan secara terpisah kemudian menggabungkan dua hasil dan menghitung agregat akhir.

Hal ini dapat ditunjukkan dengan menjalankan pipeline berikut:

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. urutan byte tidak valid dalam US-ASCII (Ruby 1.9 + rails 2.3.8 + mongodb + mongo_mapper)

  2. Apa yang setara dengan metode AbstractMongoEventListener untuk updateMulti mongooperation

  3. Masalah dengan MongoDB GridFS Menyimpan File dengan Node.JS

  4. Cara Mengotomatiskan dan Mengelola MongoDB Dengan ClusterControl

  5. show dbs memberikan Not Authorized untuk mengeksekusi perintah error