代码之家  ›  专栏  ›  技术社区  ›  canmustu

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

  •  1
  • canmustu  · 技术社区  · 7 年前

    我有拉朋友的请求时,它被接受或取消。所以,当我试图从数组中提取它时,它不起作用。

    它符合 0个

    当我删除 requested_at 从用户字段,它工作得很好。

    {
        "_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 回复  |  直到 7 年前
        1
  •  1
  •   mickl    7 年前

    使用点符号指定条件:

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