MongoDB documentation에 따르면 $ 연산자를 사용하여 쿼리 문서와 일치하는 포함 된 목록으로 콘텐츠를 업데이트 할 수 있습니다. 내 예는 좀 더 복잡한 설명서의 하나보다 :
db.item.insert({
"_id" : ObjectId("5398786591846667374b8f7c"),
"outputs" : [
{
"action" : "VIDEO",
"portalType" : "FACEBOOK",
"status" : 1
},
{
"portalType" : "YOUTUBE",
"action" : "VIDEO",
"status" : 1
}
]
})
그리고 지금 나는 다음과 같은 쿼리를 수행
db.item.update(
{ _id: ObjectId('5398786591846667374b8f7c'),
"outputs.portalType": "YOUTUBE",
"outputs.action": "VIDEO" },
{ $set: { "outputs.$.status": NumberInt(99)}})
놀랍게도, 결과가를 그 출력의 첫 번째 요소 배열이 수정되었습니다 (portalType = FACEBOOK 인 수정). 내 검색어에 따르면 확실히 틀립니다 : "actions = VIDEO 및 portalType = YOUTUBE"이 포함 된 출력.
http://s16.postimg.org/dyf4fmi6d/Untitled.png
편집 : 배열 내에서 여러 CRITERIAS 일치에 의해 제안처럼 모두가 $ elemMatch가 업데이트 명령의 쿼리 부분에 사용되어야 일치하고 있는지 확인하려면 Neil Lunn
음. 샘플에 비해 업데이트에 다른 ObjectId 값이 있습니다. 나는 이것이 실제로 효과가 있다는 것을 알게 될 것이라고 생각합니다. 버그 사냥에 거품을 터뜨려 미안해. –
감사합니다. 그건 그냥 오타 였고 오류가 계속;) –
Nope. 나는 심지어 저 자신을 도망 쳤다. 올바른 배열 멤버를 업데이트합니다. 당신은 버그를 발견하지 못했습니다. –