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

MongoDB:bagaimana cara menghitung jumlah kunci dalam dokumen?

Sangat mungkin jika menggunakan MongoDB 3.6 dan yang lebih baru melalui kerangka kerja agregasi. Gunakan $objectToArray operator dalam pipa agregasi untuk mengonversi dokumen menjadi array. Array kembali berisi elemen untuk setiap pasangan bidang/nilai dalam dokumen asli. Setiap elemen dalam larik kembali adalah dokumen yang berisi dua bidang k dan v .

Referensi untuk me-root dokumen dimungkinkan melalui $$ROOT variabel sistem yang mereferensikan dokumen tingkat atas yang saat ini sedang diproses dalam tahap alur agregasi.

Saat mendapatkan array, Anda kemudian dapat memanfaatkan penggunaan $addFields langkah pipa untuk membuat bidang yang menampung jumlah dan jumlah sebenarnya diturunkan dengan menggunakan $size operator.

Semua ini dapat dilakukan dalam satu saluran dengan menyarangkan ekspresi sebagai berikut:

db.collection.aggregate([
    { "$addFields": {
        "count": {
            "$size": { 
                "$objectToArray": "$$ROOT"
            }
        }
    } }     
])

Contoh Keluaran

{
    "_id" : ObjectId("5a7cd94520a31e44e0e7e282"),
    "a" : 1.0,
    "b" : 1.0,
    "c" : 2.0,
    "z" : 2.0,
    "count" : 5
}

Untuk mengecualikan _id bidang, Anda dapat menggunakan $filter operator sebagai:

db.collection.aggregate([
    {
        "$addFields": {
            "count": {
                "$size": { 
                    "$filter": {
                        "input": { "$objectToArray": "$$ROOT" },
                        "as": "el",
                        "cond": { "$ne": [ "$$el.k", "_id" ] }
                    }
                }
            }
        }
    }     
])

atau seperti yang disarankan oleh 0zkr PM cukup tambahkan $project langkah pipa di awal:

db.collection.aggregate([
    { "$project": { "_id": 0 } },
    { "$addFields": {
        "count": {
            "$size": { 
                "$objectToArray": "$$ROOT"
            }
        }
    } }     
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana saya bisa menjalankan MongoDB sebagai layanan Windows?

  2. Apakah database berorientasi dokumen dimaksudkan untuk menggantikan database relasional?

  3. Koneksi SSL yang ditandatangani sendiri menggunakan PyMongo

  4. Migrasi MongoDB ke DynamoDB, Bagian 2

  5. Cara menghasilkan id objek unik di mongodb