我有一个存储在MongoDB中的对象,如下所示:
{
_id: 123
name: "xyz"
attrib:
{
address: "123 xyz rd",
phone: "123-456-7890"
}
}
我想要平展此结构,因此没有attrib
字段,我只有address
和phone
字段以及name
和_id
到目前为止,这是我尝试过的:
db.emp.aggregate(
{
$project : {
{ addr : '$review.attrib.address' },
{ phn : '$review.votes.phone' },
}
}
);
任何人都可以帮助我吗?
答案 0 :(得分:10)
我试过了:
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'
}
}
);
更多细节,您可以看到:use $project to rename fields
http://docs.mongodb.org/manual/reference/aggregation/project/
答案 1 :(得分:2)
如果您打算更改数据库中的所有文档,那么聚合框架或Map / Reduce都无法实现。您可以用您喜欢的语言编写脚本,并循环遍历集合中的所有文档,逐个修改它们。