0
cart.nameでグループ化し、mongodbのcart.qtyの合計を検索するとします。以下はサンプルドキュメントです異なる値をグループ化し、mongodbの配列値の合計を表示するクエリ
{
"_id" : ObjectId("581323379ae5e607645cb485"),
"cust" : {
"name" : "Customer 1",
"dob" : "09/04/1989",
"mob" : 999999999,
"loc" : "Karimangalam",
"aadhar" : {
}
},
"cart" : [
{
"name" : "Casual Shirt",
"qty" : 1,
"mrp" : 585,
"discperc" : 10,
"fit" : null,
"size" : "L"
},
{
"name" : "Casual Shirt",
"qty" : 1,
"mrp" : 500,
"discperc" : 0,
"fit" : null,
"size" : "L"
},
{
"name" : "Cotton Pant",
"qty" : 1,
"mrp" : 850,
"discperc" : 0,
"fit" : null,
"size" : "34"
},
{
"name" : "Cotton Pant",
"qty" : 1,
"mrp" : 1051,
"discperc" : 10,
"fit" : null,
"size" : "34"
}
],
"summary" : {
"bill" : 2822.4,
"qty" : 4,
"mrp" : 2986,
"received" : "2800",
"balance" : -22.40000000000009
},
"createdAt" : ISODate("2016-10-28T10:06:47.367Z"),
"updatedAt" : ISODate("2016-10-28T10:06:47.367Z")
}
このような文書が多数あります。私は別の製品名(cart.name)とその合計数量ここ
{Casual Shirt , 30},
{Cotton Pant , 10},
{T-Shirt , 15},
{Lower , 12}
は私のクエリはcart.nameと合計数量
db.order.aggregate([
{ $unwind: "$cart" },
{ $group: {
_id: "$cart.name",
totalQTY: { $sum:"$cart.qty"},
count: { $sum: 1 }
}
}
])
することにより、グループにしようとしている以下のように出力をしたいが、それは間違って表示されます各製品名の値はtotalQty
です。私は手動でチェックした。
正しい質問をしてください。
ありがとうございました。それは正常に動作しています。 $ matchを使って合計を計算し、$ cart.nameではなく$ cartでグループ化しました。 間違ったクエリ db.collection.aggregate([ {$ unwind: "$ cart"}、 {$ match:{'cart.name': "カジュアルシャツ"}} - 商品名に一致する {$ group: {$ id: "$ cart"、totalQTY:{$ sum: "$ cart.qty"}、カウント:{$ sum:1}}} ...]) – suresh