업데이트 :이 문제에 대한 다른 접근 방법을 제공하는 필자의 대답을 읽는 것이 좋습니다.MongoDB - 배열로 문서 업데이트
다음 컬렉션이 있습니다.
{
"_id" : ObjectId("51fa56408e843042c0c24e3d"),
"uniqDates" : [
ISODate("2013-07-30T18:30:00Z"),
ISODate("2013-07-31T18:30:00Z")
]
}
{
"_id" : ObjectId("51fa5648c424ea3e37199502"),
"events" : [
{
"eid" : 1,
"title" : "Event 1",
"start" : ISODate("2013-08-04T18:30:00Z")
},
{
"eid" : 2,
"title" : "Event 2",
"start" : ISODate("2013-08-08T18:30:00Z")
}
]
}
내가 존재하는 경우 (내가 아이드하여 확인 할) "이벤트"배열에서 문서를 업데이트 할, 그렇지 않은 존재 않으면 내가 그 문서를 삽입 할.
현재 두 개의 쿼리로이 작업을 수행하고 있습니다.
db.col.update({events: {$exists: 1}}, {$pull: {"events": {"eid": 2}}});
및
db.schedule.update({events: {$exists: 1}}, {$addToSet:
{"events": {"eid": 2, "title": "Event 4", "start": new Date(2013, 08, 02)}}});
단일 쿼리로 이것을 할 수있는 방법이 있나요? upsert 작동으로 뭔가가 있습니다.
가능한 복제본 : http://stackoverflow.com/questions/3135927/mongodb-upsert-involving-lists – jsalonen