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

Mongodb, $jumlah dengan syarat

Dari dokumentasi Mongo $jumlah perilaku

kita bisa $push semua area dan panjang ke array, dan bandingkan count dengan panjang larik

db.n.agregate(

    [ 
        {
            $group: {
                _id: { name: "$name" }, 
                count: { $sum: 1 }, 
                area : {$push : "$area"}, 
                length : {$push : "$length"} } 
        },
        {
            $project:{
                _id: "$_id",
                count: "$count",
                summarizedLength: { $cond : [ {$eq : [ "$count", {$size : "$length"} ]} , { $sum : ["$length"] }, "not all numbers" ] },
                summarizedArea: { $cond : [ {$eq : [ "$count", {$size : "$area"} ]} , { $sum : ["$area"] }, "not all numbers" ] },
            }
        }
    ] 
)

atau, kita dapat menghitung jumlah defined panjang dan luas, bersama dengan total count , jika hitungannya cocok maka semua angka lainnya tidak ditentukan.

Untuk memeriksa jenis secara ketat, jika area dan panjang mungkin berisi data non-numerik, alih-alih undefined kita bisa melakukan $type periksa

db.n.aggregate(
    [
        {
            $group: {
                _id: { name: "$name" },
                count: { $sum: 1 },
                areaCount : { $sum : { $cond : [ {$eq : [ "$area", undefined ]} , 0, 1 ] } },
                lengthCount : { $sum : { $cond : [ {$eq : [ "$length", undefined ]} , 0, 1 ] } },
                summarizedLength: { $sum: "$length"  },
                summarizedArea: { $sum: "$area"  }
            }
        },
        {
            $project : {
                _id : "$_id",
                count: "$count",
                summarizedLength: { $cond : [ {$eq : [ "$count", "$lengthCount" ]} , "$summarizedLength", "not all numbers" ] },
                summarizedArea: { $cond : [ {$eq : [ "$count", "$areaCount" ]} , "$summarizedArea", "not all numbers" ] },
            }
        }
    ]
).pretty()

keluaran

{
    "_id" : {
        "name" : "abc"
    },
    "count" : 2,
    "summarizedLength" : 30,
    "summarizedArea" : "not all numbers"
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Permintaan MongoDB DALAM array objek

  2. Bagaimana mengelola pengguna dan otentikasi di MongoDB

  3. Mengisi Objek Dalam Array

  4. Memutakhirkan mongodb tidak berpengaruh dan masih menampilkan versi lama

  5. Daftar Periksa Pengembangan &Operasi untuk MongoDB