与蒙戈壳mongodb的变化的文档结构[复制](Change document structure

2019-09-25 18:50发布

这个问题已经在这里有一个答案:

  • 重塑集合中的所有文件 1回答

我在MongoDB的文档结构,我想改变我的所有文档,而无需使用这样的聚合函数的响应 ,但通过创建特定的功能,并具有从结果:

{
"_id" : ObjectId("String"),
"content" : {
    "href" : "String",
    "text" : "String",
    "code" : "String "
}
}

于:

{
"_id" : ObjectId("String"),
"href" : "String",
"text" : "String",
"code" : "String "
}

任何建议请。 谢谢。

Answer 1:

如果你不喜欢聚集(或你的content的内容可以跨文件不同)也可以使用

 db.coll.find().forEach(function (d) {
    db.coll.update({
        _id : d._id
    }, {
        $set : d.content,
        $unset : {
            'content' : 1
        }
    })
});


Answer 2:

该easiets办法做到这一点是使用聚合框架。 然后保存输出转换成newCollection核实后,你可以删除旧的和重命名创建一个。

db.collection.aggregate([{
            $project : {
                _id : 1,    
                href : "$content.href",
                text : "$content.text",
                code : "$content.code",    
            }
        }, {
            $out : "newCollection"
        }
    ])


文章来源: Change document structure in mongodb with the mongo shell [duplicate]