如何使用mongoose从数值数组中删除对象

时间:2014-04-01 20:13:56

标签: javascript node.js mongodb mongoose pull

我有这种文件

{
    "_id" : "5339be1d9a703ab8708b45675339bed39aac7",
    "description" : "data",
    "name" : "data",
    "members" : [ 
        {
            "user" : {
                "$ref" : "users",
                "$id" : ObjectId("5339be1d9a703ab8708b4567"),
                "$db" : "someDb"
            },
            "type" : "Principal"
        }, 
        {
            "user" : {
                "$ref" : "users",
                "$id" : ObjectId("5339c0c59a703a5d1f8b4569"),
                "$db" : "someDb"
            },
            "type" : "Regular"
        }
    ],
    "owner" : "5339be1d9a703ab8708b4567",
}

我试图从数组成员中提取一个元素,通过用户对象中的$ id找到它。

我使用的是Mongoose ODM。

这是我的功能:

>  var conditions = {"_id" : data.guildId},
>      update = 
>      {
>         $pull : 
>         {
>           'members.user.$id' : new mongoose.Types.ObjectId(data.userId) 
>         }
>      };
>      var options = {upsert:false};
> 
>     Guild.update(conditions, update, options, leaveRoom);

我的节点js服务器或mongo日志文件中没有报告错误,但文档仍然不受影响。

1 个答案:

答案 0 :(得分:0)

你的拉语法错了。 $pull采用数组,在您的情况下是“成员”。

您想要此更新:

{ "$pull" : { "members" : { "user.$id" : <your-condition> } }