【问题标题】:How to remove object from numeric array with mongoose如何使用猫鼬从数值数组中删除对象
【发布时间】:2014-04-02 04:44:26
【问题描述】:

我得到了这种文件

{
    "_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);

我的node js服务器或mongo日志文件中没有报错,但文档不受影响。

【问题讨论】:

  • 这是什么版本? mongoose 不支持 DBRefs,但您的文档显示 DBRef 语法。
  • 猫鼬-> 3.8.8。但我不需要更新 ref,只需从该数组中删除一个元素
  • 看我的回答 - 你的语法有点不对。

标签: javascript node.js mongodb mongoose pull


【解决方案1】:

你的 pull 语法是错误的。 $pull 接受一个数组,在您的情况下是“成员”。

您想要此更新:

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

【讨论】:

    猜你喜欢
    • 2017-03-28
    • 1970-01-01
    • 2016-01-03
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    相关资源
    最近更新 更多