Mongodb обеспечивает правильность массива и подсчета в одном запросе - PullRequest
2 голосов
/ 27 августа 2011

{id = "замок",
tags = ["Red", "Black", "White" ], количество: 3}

У меня есть коллекция, как указано выше, массив тегов с уникальным элементом и счетчик массива.

Я хотел бы добавить теги и увеличить количество тегов в одном запросе.

var query = Query.EQ ("id", "castle");
var update = Update.AddToSetWrapped ("tags", "White"). Inc (count ", 1); Photo.Update (запрос, обновление);

Я ожидал, что первая часть этого запроса недействительна, потому что «White» уже находится в массиве тегов, поэтому $ inc не будет выполняться.

Но фактический результат - тег не вставляется (правильно), и счетчик получает приращение (сюрприз!).

Я хотел бы знать, могу ли я сделать это одним запросом в вышеприведенном случае.

Я использую официальный C # драйвер mongodb.

Ответы [ 2 ]

1 голос
/ 27 августа 2011

На самом деле это ограничение MongoDB. Не существует «триггера» или «обновления x, если addToSet работает».

В системе MongoDB JIRA имеется выдающаяся ошибка здесь . Здесь похожая ошибка здесь . Если вы хотите исправить это, вам придется проголосовать за них. Конечно, этот первый был открыт более года и не запланирован, поэтому в настоящее время он не считается столь важным.

0 голосов
/ 22 сентября 2011

Учитывая ограничения MongoDB, вы можете запрашивать записи с id = "castle", которые не имеют тега "White".Затем запустите обновление, только если вы получите какие-либо записи.

...