0
새 값이 레코드의 다른 필드 값에 따라 달라지는 mongodb 레코드를 업데이트해야합니다.필드 값에 따라 1 쿼리에서 2 개의 mongodb 업데이트를 실행하십시오.
{id: 1, list: []}
{id: 2, list: [6]}
{id: 3, list: []}
{id: 4, list: [6]}
{id: 5, list: []}
내가 말할 수 있도록하려면 다음과 모음 주어진 예를 들어
는 :
if ('id' is in [1, 3, 5]) => add the value '6' to 'list'
else => remove the value '6' from 'list'
결과는 다음과 같습니다이 2에서 수행 할 수
{id: 1, list: [6]}
{id: 2, list: []}
{id: 3, list: [6]}
{id: 4, list: []}
{id: 5, list: [6]}
다음과 같이 쿼리를 업데이트하지만 1에서 수행하려고합니다.
db.collection.update({$in: [1, 3, 5]}, {$addToSet: {list: 6}})
db.collection.update({$in: [2, 4]}, {$pull: {list: 6}})
코드는 Java로 작성되었습니다.
내가 [$ in : [2, 4]를 가졌던 유일한 이유는 [2, 4]가 [1, 3, 5]의 보완이 될 필요가 없다는 것입니다. 그것은 단지 [2] 일 수 있습니다. – ben39
가능한 경우 $ nin 또는 임의의 부정 연산자를 사용하지 않는 것이 좋습니다. –
@RaxitSheth 부울 오퍼레이터가 여전히 덮여있는 인덱스를 사용할 수있는 부울 또는 낮은 선택 필드를 무효화하지 않는다면 부정 속성을 사용하는 것이 좋습니다. – Sammaye