2016-06-01 1 views
1

나는 기본 문서과 같이 있습니다컬렉션의 하위 문서를 찾고 Mongoose/MongoDB로 업데이트하는 방법은 무엇입니까?

_id: fm393nrr, 
name: 'My Event' 
members: [{ 
    user: 94iru134nf 
    attending: 1 
}, { 
    user: er9fr94, 
    attending: 0 
}] 

은 어떻게 회원 attendinguser에 따라 변경까요? 같은

예를 들어

, 뭔가 : 위에서

var eventToFind = 'fm393nrr'; //usually retrieved by req.params 
var userToFind = 'er9fr94'; //usually retrieved by req.body.user 

Event.findOneAndUpdate({ 
     _id: eventToFind 
    }, { 
     $set: {members.attending: {.....}} 
    } 
).exec(function(){....}); 

, 나는 매우 꺼져 attending 1의 코드를 가지고 er9fr94의 회원을 설정하려고하지만 장거리 슛을 시도했다입니다. 이전에는 하위 문서/포함 된 문서로 작업하지 않았습니다.

답변

1

중첩 된 객체를 처리 할 때 큰 따옴표를 추가하십시오. $은 일치 항목의 배열 색인과 같습니다.

Event.findOneAndUpdate({ 
    _id: eventToFind, 
    "members.user":userToFind, 
}, { 
    $set: {"members.$.attending": {.....}} 
}) 
+0

그래서 나는 단순히'$ 세트를 할 것 :

이 시도 { ".. 회원 $ 참석": 1}'자신'attending' 변경? – Fizzix

+0

예. 'userToFind'와 일치하는'members'의 참석을 변경합니다. – RainingChain

+0

아마'{upsert : true, new : true}'를 추가하십시오. 문제가 생기면 –

관련 문제