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

ใช้ MongoDB ซ้อนกัน $group และ $sum เพื่อรับจำนวนหุ้นที่มี ProductID ที่คล้ายกันหรือไม่


$group ใน MongoDB ใช้เพื่อจัดกลุ่มเอกสารอินพุตตามนิพจน์ _id ที่ระบุ ให้เราสร้างคอลเลกชันที่มีเอกสาร -

> db.demo466.insertOne(... {...... "ProductPrice" :150,... "ProductQuantity" :1,... "ProductName" :"Product-1",.. . "ActualAmount" :110,... "ProductProfit" :40,... "ProductId" :1... }... );{ "acknowledged" :true, "insertedId" :ObjectId("5e80477cb0f3fa88e2279066") }>> db.demo466.insertOne(... {...... "ProductPrice" :150,... "ProductQuantity" :1,... "ProductName" :"Product-1",... }>> db.demo466.insertOne(... {...... "ProductPrice" :150,... "ProductQuantity" :1,... "ProductName" :"Product-1",... "ActualAmount" :110,... "ProductProfit" :40,... "ProductId" :2... }... );{ "acknowledged" :true, "insertedId" :ObjectId("5e80477db0f3fa88e2279067")}> db.demo466.insertOne(... {...... "Productไพร" :170,... "ProductQuantity" :2,... "ProductName" :"Product-2",... "ActualAmount" " :130,... "ProductProfit" :50,... "ProductId" :3... }... );{ "acknowledged" :true, "insertedId" :ObjectId("5e80477eb0f3fa88e2279068")} 

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -

> db.demo466.find();

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

{ "_id" :ObjectId("5e80477cb0f3fa88e2279066"), "ProductPrice" :150, "ProductQuantity" :1,"ProductName" :"Product-1", "ActualAmount" :110, "ProductProfit" :40, " ProductId" :1 }{ "_id" :ObjectId("5e80477db0f3fa88e2279067"), "ProductPrice" :150, "ProductQuantity" :1,"ProductName" :"Product-1", "ActualAmount" :110, "ProductProfit" :40 , "ProductId" :2 }{ "_id" :ObjectId("5e80477eb0f3fa88e2279068"), "ProductPrice" :170, "ProductQuantity" :2,"ProductName" :"Product-2", "ActualAmount" :130, "ProductProfit" :50, "ProductId" :3 }

ต่อไปนี้เป็นแบบสอบถามเพื่อใช้ $group และ $sum ที่ซ้อนกันใน MongoDB -

> db.demo466.aggregate([... {... '$group':{... '_id':{... 'ProductName':'$ProductName',... }, .. 'ActualAmount':{'$sum':'$ActualAmount'},... 'ProductQuantity':{'$sum':'$ProductQuantity'},... 'ProductId':{'$addToSet':... '$ProductId'},... },... },... {... '$project':{... 'ProductQuantity':จริง,... 'ActualAmount':จริง,... 'NumberOfProductInStock':{'$size':'$ProductId'}... }... }])

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

{ "_id" :{ "ProductName" :"Product-2" }, "ActualAmount" :130, "ProductQuantity" :2,"NumberOfProductInStock" :1 }{ "_id" :{ "ProductName" :"Product -1" }, "ActualAmount" :220, "ProductQuantity" :2,"NumberOfProductInStock" :2 }