![](/img/trans.png)
[英]is it possible to join sub document with document with specific fields on MongoDB?
[英]How to sum the fields in a sub document + MongoDB + Javascript?
您能幫我這個疑問嗎? 如何qty
以下文檔中的qty
字段? 我編寫了一段代碼,當您訪問price
, age
等時,該代碼似乎起作用,但在訪問子文檔時,它似乎無法正常工作。 在這種情況下, total
= 0`。
文獻:
{
"_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
}
]
}
碼:
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.inventory.aggregate([
{$unwind: "$items"},
{$match: {"items.price" : { $gt: 70, $lt: 90 }}},
{$group:{_id:"$_id","total": {$sum:"$items.price"}}}
])
exports.test = function(collection, callback) {
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
db.collection(collection).aggregate(
{$unwind: "$items"} ,
{
$match : { "items.price" : { $gt: 70, $lt: 90 }}
},
{
$group : { _id:null,total: { $sum: "$items.qty" }}
},
function(err, result) {
console.log("result",result);
if (result) {
callback(result);
} else {
callback(false);
}
});
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.