如何使用MongoDB上的聚合从数组中删除字段?

时间:2018-02-05 13:34:42

标签: arrays mongodb aggregation-framework

    {Crs:{[
       {Cr: {
            "_id" : ObjectId("5a75baada0f20bd4e612d480"),
            "Number" : 400,
            "Page" : 24,
            "DC" : "NE",
        }},
       {Cr: {
            "_id" : ObjectId("5a75baada0f20bd4e612d489"),
            "Number" : 300,
            "Page" : 14,
            "DC" : "100",
        }},
 ]}}

我有这个数据,我使用聚合模型,我想知道如何使用聚合从数组的所有元素中删除“DC”字段。

  >db.crs.aggregate(
    [
        {$group : {_id : null, crs : {$push : {cr : "$$ROOT"}}}},
        {$project : {_id : 0}}
    ]
)

这是对数据进行建模的方法。 我认为这与$ project有关。

1 个答案:

答案 0 :(得分:0)

首先,您的文档不是有效的JSON模式。您可能会重新考虑该特定文档的以下架构。

{
    Crs:[
        {
            "_id" : ObjectId("5a75baada0f20bd4e612d480"),
            "Number" : 400,
            "Page" : 24,
            "DC" : "NE"
        },
        {
            "_id" : ObjectId("5a75baada0f20bd4e612d489"),
            "Number" : 300,
            "Page" : 14,
            "DC" : "100"
        }
    ]
}

具有上述架构,您可以使用$unset聚合运算符轻松删除 DC 字段。

db.crs.aggregate([{$unset: 'Crs.DC'}]);