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

어떤 버전이 무엇입니까? mongoose는 DBRef를 지원하지 않지만 문서는 DBRef 구문을 보여줍니다. –

+0

몽구스 -> 3.8.8. 하지만, 그 배열에서 요소를 제거하기 위해서만 ref를 업데이트 할 필요가 없습니다. – Morgoth

+0

내 대답을 참조하십시오. 구문은 약간 꺼져 있습니다. –

답변

0

가지고있는 끌어 오기 구문이 잘못되었습니다. $pull은 배열을 취합니다.이 경우는 "멤버"입니다.

는 대신이 업데이트를 원하는 :

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

감사합니다. 문제가 해결되었습니다. – Morgoth