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

Bagaimana saya bisa menghitung total positif, total negatif harga dan jumlah menggunakan Node.js dan Mongoose

Mengingat bahwa hasil yang diharapkan adalah angka dan nilai dari summary koleksi adalah angka (jika tidak, Anda perlu menjadikannya angka) di sini adalah agregasi yang menghitung hasilnya:

db.getCollection('userpricing').aggregate([
    {$group: {
        _id:"$user_id", 
        user_id: {$first: "$user_id"}, 
        Totalpositiveprice:{$sum:{$cond:[{ '$gt': ['$price', 0]}, "$price", 0]}}, 
        Totalnegativeprice:{$sum:{$cond:[{ '$lt': ['$price', 0]}, "$price", 0]}},
        Balanceprice:{"$sum":"$price"}}
     },
    {
      $lookup:
        {
          from: "summary",
          localField: "user_id",
          foreignField: "user_id",
          as: "user_id2"
        }
   },
   {$project: {
    _id:0, 
    user_id:1, 
    Totalpositiveprice: {$sum: ["$Totalpositiveprice", {$sum: "$user_id2.Totalpositiveprice"}] },
    Totalnegativeprice: {$sum: ["$Totalnegativeprice", {$sum: "$user_id2.Totalnegativeprice"}] },
    Balanceprice: {$sum: ["$Balanceprice", {$sum: "$user_id2.Balanceprice"}] },
}},

     {$out: "summary"}
]).pretty()

Hasil:

db.summary.find().pretty()

{
    "_id" : ObjectId("584fde2906c7385883be0d15"),
    "user_id" : 2,
    "Totalpositiveprice" : 10000,
    "Totalnegativeprice" : 0,
    "Balanceprice" : 10000
}
{
    "_id" : ObjectId("584fde2906c7385883be0d16"),
    "user_id" : 1,
    "Totalpositiveprice" : 23000,
    "Totalnegativeprice" : -10000,
    "Balanceprice" : 13000
}

Nanti Anda perlu mengonversinya menjadi string jika perlu.

Catatan: Hasilnya menggantikan kumpulan ringkasan dengan nilai baru yang dihitung (dan diperbarui). Sebaiknya uji dulu hasil Anda.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB -- database dalam jumlah besar

  2. Gunakan LINQ di C# untuk menemukan catatan MondoDB ketika nilai dalam bidang daftar cocok dengan nilai kriteria dari daftar

  3. Mongoose (modul node.js) menyebabkan penggunaan CPU yang tinggi

  4. Masalah Koneksi MongoDB Intermiten:Upaya telah dilakukan untuk mengakses soket dengan cara yang dilarang oleh izin aksesnya

  5. errmsg :Tidak ada host yang dijelaskan dalam konfigurasi baru 1 untuk replika set rs0 memetakan ke node ini, Mengapa saya menerima pesan ini?