重塑集合中的所有文档

Bru*_*ali 3 mongodb mongodb-query aggregation-framework

我的文档中有以下结构:

{
    "_id" : 1,
    "item" : {
        "name" : "abc",
        "price" : 10,
        "quantity" : 2,
        "date" : ISODate("2014-03-01T08:00:00Z")
    }
}
Run Code Online (Sandbox Code Playgroud)

我想改变每个文件:

{
    "_id" : 1,
    "name" : "abc",
    "price" : 10,
    "quantity" : 2,
    "date" : ISODate("2014-03-01T08:00:00Z")
}
Run Code Online (Sandbox Code Playgroud)

换句话说,删除嵌入的文档,但不删除细节!

谢谢!

sty*_*ane 5

您可以使用 aggregation特别是$project操作员.该$out运营商让你写,结果在另一个集合.

db.collection.aggregate([
    { "$project": {
        "_id": "$_id", 
        "name": "$item.name",
        "price": "$item.price", 
        "quantity": "$item.quantity", 
        "date": "$item.date"}
    }, 
    { "$out": "collection"}
])
Run Code Online (Sandbox Code Playgroud)

您现在的文档如下所示:

{
    "_id" : 1,
    "name" : "abc",
    "price" : 10,
    "quantity" : 2,
    "date" : ISODate("2014-03-01T08:00:00Z")
}
Run Code Online (Sandbox Code Playgroud)

您也可以通过为新结果集提供相同的名称来覆盖预先存在的集合,但这样做.