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

Arrays MongoDB-删除嵌套数组中的项,arrays,mongodb,Arrays,Mongodb,我看到了很多类似的问题,但在我的收藏中却无法做到 如何删除特定注释(您可以假设我知道用户ID) 例如,我想删除带有commentId=3的注释,我知道它位于userId=1下 [ { userId: "1", posts: [ { postId: "2", comments: [ { commentId: "3",

我看到了很多类似的问题,但在我的收藏中却无法做到

如何删除特定注释(您可以假设我知道用户ID)

例如,我想删除带有
commentId=3
的注释,我知道它位于
userId=1

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

谢谢

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

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

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

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

只有一条注释-不推荐使用update,请改用updateOne/updateMany
db.posts.update(
    {"userId" : "1"}, 
    {$pull : {"posts.$[].comments" : {"commentId":"3"}}},
    {"multi": true}
)