2014-04-01 62 views
0

删除对象我这样的文件如何从数值数组猫鼬

{ 
    "_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服务器或蒙戈日志文件中报告的错误,但文档不受影响。

+0

什么版本呢?猫鼬不支持DBRef,但你的文档显示DBRef语法。 –

+0

猫鼬 - > 3.8.8。但我不需要更新参考,只是从该数组中删除一个元素 – Morgoth

+0

看到我的答案 - 你的语法稍微偏离。 –

回答

0

您使用的拉语法错误。 $pull需要一个数组,在你的情况下是“成员”。

希望此更新替代:

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

谢谢,这解决了我的问题 – Morgoth