MongoDB-删除嵌套数组中的项目

时间:2020-05-13 09:04:39

标签: arrays mongodb

我对此有很多类似的问题,但无法在我的收藏中使用。

如何删除特定评论(您可以假定我知道userId)。

例如,我想用commentId=3删除评论,并且知道它在userId=1下。

[
{
    userId: "1",
    posts: [
        {
            postId: "2",
            comments: [
                {
                    commentId: "3",
                    ...
                },
                ...
            ]
        },
        ...
    ]
},
...
]

谢谢!

2 个答案:

答案 0 :(得分:1)

这适用于Mongodb 4.2,如果与“ commentId” 3相匹配,则会从“ comments”中删除第一个数组条目。

db.posts.update(
    {"userId" : "1"}, 
    {$pull : {"posts.$[].comments" : {"commentId":"3"}}}
)

如果要删除所有数组条目,请使用:

db.posts.update(
    {"userId" : "1"}, 
    {$pull : {"posts.$[].comments" : {"commentId":"3"}}},
    {"multi": true}
)

答案 1 :(得分:0)

您是否尝试过使用deleteOne()函数?尝试看看MongoDb文档。 MongoDbDocumentation