2011-08-26 2 views
2

계산 {ID = "성",
태그 = [ "레드", "블랙", "화이트" , 횟수 : 3}MongoDB를 배열의 정확성을 보장하고 단일 쿼리에

나는 위와 같은 컬렉션, 고유 항목 및 배열 카운터가있는 태그 배열을 가지고 있습니다.

태그를 추가하고 단일 쿼리에서 태그 수를 증가시키고 싶습니다.

var query = Query.EQ ("id", "castle");
VAR 업데이트 = Update.AddToSetWrapped는 ("태그", "화이트") INC (수는 "1). Photo.Update (쿼리, 업데이트)

내가 기대했던 것은 첫 번째 부분이 "흰색"이 태그 배열에 이미 있기 때문에 유효하지 않습니다. $ inc는 실행되지 않습니다.

실제 결과는 태그가 삽입 (수정)되고 카운터가 증가합니다 (깜짝!)

위의 경우 단일 쿼리로 할 수 있는지 알고 싶습니다.

mongodb 공식 C# 드라이버를 사용하고 있습니다.

답변

1

이것은 실제로 MongoDB의 제한 사항입니다. "트리거"또는 "addToSet이 작동하면 x 업데이트"가 없습니다.

MongoDB JIRA 시스템 here에 해결되지 않은 버그가 있습니다. 비슷한 버그가 있습니다 here. 이 문제를 해결하려면 투표를해야합니다. 물론, 그 첫번째 것은 1 년 이상 열렸고, 예정되어 있지 않다. 그래서 그것은 그렇게 중요하게 간주되지 않는다.

0

MongoDB의 제한 사항을 감안할 때 id = "castle"인 "White"태그가없는 레코드를 쿼리 할 수 ​​있습니다. 그런 다음 레코드가있는 경우에만 업데이트를 실행하십시오.