6
이 질문은 이전에 물어 보았지만 다른 시나리오입니다. 나는이 같은 컬렉션을 가지고 싶습니다하나의 쿼리로 목록을 업서스하는 방법이 있습니까?
{
"_id" : ObjectId("4c28f62cbf8544c60506f11d"),
"pk": 1,
"forums": [{
"pk": 1,
"thread_count": 10,
"post_count": 20,
}, {
"pk": 2,
"thread_count": 5,
"post_count": 24,
}]
}
는 내가하고 싶은 것은 카운터를 증가 시키거나 존재하지 않는 경우 항목을 추가하는 "포럼"항목을 upsert하는 것입니다.
예는 다음과 같이 (내가 말이 희망을) 수행하는 경우 :
db.mycollection.update({
"pk": 3,
"forums.pk": 2
}, {
"$inc": {"forums.$.thread_count": 1},
"$inc": {"forums.$.post_count": 1},
}, true)
을하고 있습니다
-
:
이
- 전체 컬렉션을 새로운 항목으로 올리기
- addToSet 포럼 항목 당신이 그것을 할 수있는보다 효율적인 방법을 알고
db.mycollection.update({pk:3}, {pk:3}, true) db.mycollection.update({pk:3}, {$addToSet: {forums: {pk:2}}}) db.mycollection.update({pk:3, 'forums.pk': 2}, {$inc: {'forums.$.thread_counter': 1, {'forums.$.post_counter': 1}})
위치 : 목록 말의 위치 운영자
{
"_id" : ObjectId("4c28f62cbf8544c60506f11d"),
"pk": 1,
"forums": [{
"pk": 1,
"thread_count": 10,
"post_count": 20,
}, {
"pk": 2,
"thread_count": 5,
"post_count": 24,
}]
},
{
"_id" : ObjectId("4c28f62cbf8544c60506f11e"),
"pk": 3,
"forums": [{
"pk": 2,
"thread_count": 1,
"post_count": 1,
}]
}
내가 반드시 세 단계에 그것을 만들 수 있습니다
와
네, 알아 냈습니다. 어쨌든 고마워. – Germano