19

我有一个存储在 MongoDB 中的对象,如下所示:

{
_id: 123
name: "xyz"
    attrib: 
    {
       address: "123 xyz rd",
       phone: "123-456-7890"
    }
}

我想扁平化这个结构,所以没有attrib字段,我只有addressandphone字段和nameand _id

到目前为止,这是我尝试过的:

db.emp.aggregate(
    { 
    $project : {
            { addr : '$review.attrib.address' },
            { phn : '$review.votes.phone' },
        }
    }
);

任何人都可以进一步帮助我吗?

4

2 回答 2

25

我尝试过这个:

db.abc.insert({
  _id: 123,
  name: "xyz",
  attrib: {
     address: "123 xyz rd",
     phone: "123-456-7890"
  }
});
db.abc.aggregate(
{ 
  $project : {
    _id:1,
    name:1,
    addr : '$attrib.address',
    phn : '$attrib.phone' 
  }
}
);

更详细的可以看:<code>使用$project重命名字段 http://docs.mongodb.org/manual/reference/aggregation/project/

于 2013-07-30T02:50:51.583 回答
2

如果您打算更改数据库中的所有文档,那么聚合框架或 Map/Reduce 都不是他们要走的路。相反,您可以用自己喜欢的语言编写脚本,然后遍历集合中的所有文档以逐个修改它们。

于 2013-07-30T08:06:00.337 回答