在Mongodb中使用聚合管道重新格式化集合 [英] Reformat collection using aggregation pipeline in Mongodb
本文介绍了在Mongodb中使用聚合管道重新格式化集合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个下一个对象的集合:
I have a collection of next objects:
{
"_did": "213412323234",
"metadata": [
{
"id": "Language",
"value": "EN"
},
{
"id": "City",
"value": "New York"
},
{
"id": "Gender",
"value": "Male"
}
]
}
使用一些管道运算符(可能是$ project)之后,我期望这样的事情:
After using some pipeline operators (maybe $project), I expect something like this:
{
"id": "213412323234",
"metadata": {
"Language": "EN",
"City": "New York",
"Gender": "Male"
}
}
推荐答案
尝试使用此查询脚本
var results = db.meta.aggregate([{
$project: {
id: "$_did",
_id: 0,
keys: "$metadata.id",
values: "$metadata.value"
}
}])
function object(keys, values) {
var obj = {};
for (var index in keys) {
obj[keys[index]] = values[index];
}
return obj;
}
results = results.map(function (res) {
return {
id: res.id,
metadata: object(res.keys, res.values)
}
})
这篇关于在Mongodb中使用聚合管道重新格式化集合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文