在objectId MongoDB,NodeJS之后删除嵌套对象

时间:2017-11-10 19:10:17

标签: node.js mongodb

我可以在MongoDB中的ObjectID之后删除对象吗?

例如我们有文件:

{
"_id" : ObjectId("5a05f209e479fa45b414d288"),
"name" : "example",
"availability" : null,
"users" : [ 
    ObjectId("59cd1f9a71b8ad5f48eb74f6")
],
"lists" : [ {
        "list" : "example list 2",
        "_id" : ObjectId("5a05f21de479fa45b414d28f"),
        "cards" : [ 
            {
                "name" : "example card 2",
                "_id" : ObjectId("5a05f222e479fa45b414d292"),
                "labels" : [ 
                    {
                        "_id" : ObjectId("5a05f209e479fa45b414d28c"),
                        "label" : {
                        "colour" : "#61BD4F",
                        "name" : "green"
                        }
                    }
                ]
            }
        ]
    }
]
    "__v" : 0

}

我可以使用_id删除此对象吗?例如api nodejs中的方法findByIdAndRemove只删除这个对象吗?

                        {
                        "_id" : ObjectId("5a05f209e479fa45b414d28c"),
                        "label" : {
                        "colour" : "#61BD4F",
                        "name" : "green"
                        }
                    }

这个_id之后?

                        "_id" : ObjectId("5a05f209e479fa45b414d28c"),

1 个答案:

答案 0 :(得分:0)

没有直接的方法可以在MongoDb中删除objectId之后的子文档。

对于这种情况,我使用下面的代码达到了预期的结果。

collectionName.update({"lists.cards._id": ObjectId("5a05f222e479fa45b414d292") }, { "$pull": { "lists.0.cards.0.labels": { "_id": ObjectId("5a05f209e479fa45b414d28c") } } });

使用点符号过滤数据库中的文档。

由于预期查询只返回一个文档,因此我使用零索引来访问所需的嵌套对象。