このクエリで親切にお手伝いできますか?下の文書のqty
フィールドの合計はどのようにして得られますか?私はあなたがprice
、age
などにアクセスしているときに動作するように見えるコードを書いたが、サブドキュメントにアクセスしているときはうまく動作しないようだ。ここではtotal
= 0`となります。サブ文書+ MongoDB + Javascriptのフィールドを合計するにはどうすればいいですか?
ドキュメント:
{
"_id" : ObjectId("50a8240b927d5d8b5891743c"),
"cust_id" : "abc123",
"status" : "A",
"price" : 75,
"age" : 24,
"ord_date" : "02/02/2012",
"items" : [
{
"sku" : "mmm",
"qty" : 5,
"price" : 2.5
},
{
"sku" : "nnn",
"qty" : 500,
"price" : 50
}
]
}
CODE:
exports.test = function(collection, callback) {
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
db.collection(collection).aggregate(
{
$match : { "price" : { $gt: 70, $lt: 90 }}
},
{
$group : { total: { $sum: "$items.qty" }}
},
function(err, result) {
console.log("result",result);
if (result) {
callback(result);
} else {
callback(false);
}
});
});
}
あなたの助けに感謝!
は、あなたがグループ化する前{$unwind items}
を追加する必要があり、
私はあなたから提案されたコードを挿入しましたが、残念ながらそれは動作しませんでした。 db.collection(コレクション).aggregate( { $アンワインド: "$アイテム" }、 { $マッチ:{ "価格":{$ GT:70、$のLT:90}} }一致 –
アンワインド:( { $マッチ:{ "価格":{$ GT:70、$のLT:90}} }。、 { $アンワインド: "$アイテム" } 、 { $ group:{合計:{$ sum: "$ items.qty"}} } –
結果はまだ未定義である後 –