2
在查找字段的總和(如果存在的話),我有以下的MongoDB結構MongoDB中 - 集合
{
"_id": ObjectId("507c80a143188f9610000003"),
"date": ISODate("2012-10-15T21: 31: 13.0Z"),
"uid": NumberInt(35920),
"comp": NumberInt(770),
"fields": {
"rating": {
"parent": "rating",
"weight": NumberInt(2),
"rel_weight": 0.11,
},
"capacity": {
"parent": "capacity",
"weight": NumberInt(4),
"rel_weight": 0.89,
},
}
}
的「域」屬性有2場「評級」,並在其「能力」。但是,每個條目可能有不同的一組字段。例如。尺寸,價格等。
我想找到所有在「字段」下有「評級」的條目,並獲得所有這些條目的「重量」屬性的總和。
我是mongodb的新手,我嘗試使用mapReduce函數,但沒有用。
下面給出的是我使用的代碼。請讓我知道我錯了什麼地方,或者是否有更好的解決方案而不是此代碼。
function map(){
emit(this._id,{weight:this.fields.rating.weight});
}
function reduce(key,value){
var sum = 0;
for (var i=0; i<value.length; i++) {
sum += value[i].amount;
}
return sum;
}
res = db.collection_name.mapReduce(map, reduce, { query: {"fields.rating" : { $exists: true } });