如何从MongoDB中的数组中拉出对象

时间:2019-04-14 18:19:06

标签: javascript mongodb mongoose

在接受或取消请求时,我有拉朋友请求。因此,当我尝试将其从数组中拉出时,它不起作用。

它与 1 个文档匹配,但对 0 个文档进行了修改。

当我从用户字段中删除requested_at字段时,效果很好。

我在哪里犯错?

MongoDB文档

{
    "_id" : ObjectId("5cb18680aa024b2d441f93cc"),
    "friends" : [],
    "friend_requests" : [ 
        {
            "user" : {
                "id" : ObjectId("5cb14fd7db537905c89e0a72"),
                "requested_at" : ISODate("2019-04-14T17:51:00.588Z")
            }
        }
    ]
}

MongoDB查询

db.getCollection('users').updateOne(
    { _id: ObjectId("5cb18680aa024b2d441f93cc") },
    {
        $pull: {
            friend_requests: {
                user: {
                    id: ObjectId("5cb14fd7db537905c89e0a72")
                }
            }
        }
    });

结果

{
    "acknowledged" : true,
    "matchedCount" : 1.0,
    "modifiedCount" : 0.0
}

1 个答案:

答案 0 :(得分:1)

使用点表示法指定条件:

db.users.updateOne(
    { _id: ObjectId("5cb18680aa024b2d441f93cc") },
    {
        $pull: {
            "friend_requests": {
                "user.id": ObjectId("5cb14fd7db537905c89e0a72")
            }
        }
    });