
mongodb +合并词典-英雄云拓展知识分享
我有一个数据库,该数据库被构造为
{"id":5,"type":{"hello":1,"sad":2,"luck":1}})

现在我进行搜索
db.collection.distinct("type")[
{
"hello" : 1,
"sad" : 2
},
{
"hello" : 1,
"sad" : 2,
"luck" : 1
}
]
现在,我想将每一个键的所有值总结为以下结果:
{ "hello" : 2, "sad" : 4, "luck" : 1 }}
是不是有一种方法可以实现这一目标,谢谢。
Mongo 3.4.4版本
您可使用 $objectToArray
它创建了键值对数组。
db.collection.aggregate({"$project": {
"type": {
"$objectToArray": "$type"
}
}
}, {
"$unwind": "$type"
}, {
"$group": {
"_id": "$type.k",
"count": {
"$sum": "$type.v"
}
}
})
较旧的版本
您可使用 mapreduce
var map = function() {var type = this.type;
Object.keys(type).forEach( function(key) { emit( key, type[key] ); } );
};
var reduce = function( key, values ) {
return values.length;
};
db.collection.mapReduce( map, reduce, { out: { "inline" : 1} } )['results']
暂时没有评论,来抢沙发吧~