2014-04-01 81 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