Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

ฟิลด์เอกสารย่อย Sum MongoDB ย่อย?


คุณสามารถใช้กรอบงานรวมสำหรับสิ่งนี้ ให้เราสร้างคอลเลกชันที่มีเอกสารก่อน -

> db.summingSubDocumentDemo.insertOne(
... { "_id" :101, "CustomerDetails" : { "CustomerPurchase" : { "CustomerPurchaseAmount" : 2000 } } });
{ "acknowledged" : true, "insertedId" : 101 }

> db.summingSubDocumentDemo.insertOne( { "_id" :102, "CustomerDetails" : { "CustomerPurchase" : { "CustomerPurchaseAmount" : 3000 } } });
{ "acknowledged" : true, "insertedId" : 102 }

> db.summingSubDocumentDemo.insertOne( { "_id" :103, "CustomerDetails" : { "CustomerPurchase" : { "CustomerPurchaseAmount" : 5000 } } });
{ "acknowledged" : true, "insertedId" : 103 }

ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงเอกสารทั้งหมดจากคอลเลกชันโดยใช้วิธี find() -

> db.summingSubDocumentDemo.find().pretty();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{
   "_id" : 101,
   "CustomerDetails" : {
      "CustomerPurchase" : {
         "CustomerPurchaseAmount" : 2000
      }
   }
}
{
   "_id" : 102,
   "CustomerDetails" : {
      "CustomerPurchase" : {
         "CustomerPurchaseAmount" : 3000
      }
   }
}
{
   "_id" : 103,
   "CustomerDetails" : {
      "CustomerPurchase" : {
         "CustomerPurchaseAmount" : 5000
      }
   }
}

นี่คือแบบสอบถามเพื่อรวมเขตข้อมูลเอกสารย่อย MongoDB -

> db.summingSubDocumentDemo.aggregate({$group : {_id: "",
... totalAmount : {$sum: "$CustomerDetails.CustomerPurchase.CustomerPurchaseAmount"}}},
... {$project: {_id: 0, totalAmount: 1}});

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{ "totalAmount" : 10000 }