在Mongodb中使用聚合管道重新格式化集合 [英] Reformat collection using aggregation pipeline in Mongodb

查看:143
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆