mongodb中的投影场为另一个场

时间:2016-07-21 21:05:12

标签: javascript mongodb database

我有以下Json的例子:

{
    "status": "1",
    "instancia": "1",
    "infoAdicionais": {
        "partes": [{
            "id": "123"
        }]
    }
}

我想要一些模式将de partes 数组放出对象,有点像这样:

{
    "status": "1",
    "instancia": "1",
    "partes": [{
            "id": "123"
    }]
}

找到命令有效吗?我使用mongodb 2.0时,无法使用聚合函数。

由于

1 个答案:

答案 0 :(得分:0)

似乎从mongodb blog post开始,mongodb 2.2上提供了聚合框架,包括$project

以下将:

  • $project所有字段,但infoAdicionals&使用$infoAdicionais.partes
  • 创建一个新的

在mongo 2.2中查询是:

db.runCommand({
  aggregate: "device",
  pipeline: [{
    $project: {
      "status": 1,
      "instancia": 1,
      "partes": "$infoAdicionais.partes"
    }
  }]
});

在mongo 2.6+查询中是:

db.device.aggregate([{
  $project: {
    "status": 1,
    "instancia": 1,
    "partes": "$infoAdicionais.partes"
  }
}])

在mongo 2.0.0中,我用光标迭代每个项目,添加一个属性&删除另一个:

var cursor = db.device.find();

while(cursor.hasNext()){
    var item = cursor.next();
    item.partes=item.infoAdicionais.partes;
    delete item['infoAdicionais'];
    printjsononeline(item);
}