简体   繁体   English

如何从MongoDB中的数组中提取对象

[英]How to pull an object from array in MongoDB

I have pull friend request when it is accepted or canceled.当它被接受或取消时,我有拉朋友请求。 So, when I try to pull it from array, it doesn't work.因此,当我尝试从数组中提取它时,它不起作用。

It matches for 1 document but 0 document modified.它匹配1 个文档,但修改了0 个文档。

When I delete the requested_at field from user field, it works well.当我从用户字段中删除requested_at字段时,它运行良好。

Where do I make mistake at ?我在哪里出错?

MongoDB Document MongoDB 文档

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

MongoDB Query MongoDB 查询

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

Result结果

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

Use dot notation to specify a condition:使用点表示法指定条件:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM