我在MongoDB中存储了一个对象,看起来像:

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

我想把这个 struct 展平,这样就没有attrib个场,只有addressphone个场,还有name_id个场.

到目前为止,我一直在try :

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

有人能帮我进一步吗?

推荐答案

如果您打算更改数据库中的所有文档,那么无论是聚合框架还是Map/Reduce都是行不通的.相反,您可以用自己喜欢的语言编写一个脚本,然后循环遍历集合中的所有文档,逐个修改它们.

Mongodb相关问答推荐

MongoDB:就地分组嵌套数组的元素

在Mongoose中对嵌套文档设置时间戳,但不对父文档设置时间戳

MongoDB-如何过滤和获取数组字段中的最新数据

MongoDB聚合如何对对象数组中的值求和

如何在Mongo中查找数组中的特定对象

如何在Mongodb Mongoose Nodejs中提取不等于一组值的字段

MongoDb聚合查询问题

如何获取mongodb ObjectId的值?

如何在 MongoDB 中已经存在的 slug 中添加一个随机数?

mongoDB 过滤、排序和排名结果

使用 Flask-pymongo 扩展通过 _id 在 MongoDB 中搜索文档

Spring Boot MongoDB 连接问题

MongoDB 使用自定义表达式或函数进行排序

如何按季度分组日期?

Mongo按实际上是数字的字符串值排序

使用自定义 _id 值时 mongodb 中的 Upserts

mongo dbname --eval 'db.collection.find()' 不起作用

Mongo 条件为key doesn't exist?

带有条件的MongoDB聚合查找

Mongodb Compass 无法在 Ubuntu 18.10 中打开