«Дублирование имени поля с модификаторами не допускается» при обновлении - PullRequest
21 голосов
/ 03 января 2011

При попытке обновить поле (я) в Mongo появляется ошибка «Дублирование имени поля не допускается с модификаторами».Пример:

> db.test.insert({test: "test1", array: [0]});
> var testFetch = db.test.findOne({test: "test1"});
> db.test.update(testFetch, 
                 {$push: {array: 1}, //push element to end of key "array"
                  $pop:  {array: -1} //pop element from the start of key "array"
                 });
  Field name duplication not allowed with modifiers

Нет ли способа выполнить эту атомарную операцию?Я не хочу делать два отдельных обновления для этого.

1 Ответ

13 голосов
/ 03 января 2011

В системе заявок Монго существует нерешенная проблема: http://jira.mongodb.org/browse/SERVER-1050

Похоже, это запланировано на этот год. Ваш сценарий определенно является разумным сценарием, но он также связан с множеством крайних случаев. Что если вы $push и $pop на пустом массиве? Что ожидается? Что вы хотите, если вы $push и $pull?

Я не хочу делать два отдельных обновления для этого.

Я знаю, что это действительно имеет "запах кода", но является ли это полным блокиратором для использования этого решения? Будет ли «двойное обновление» полностью разрушать производительность сервера?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...