Подтвердить что ты не робот

"Дублирование имени не допускается с помощью модификаторов" при обновлении

Я получаю ошибку "Ошибка дублирования имени не допускается с модификаторами" при попытке обновить поле в Монго. Пример:

> 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

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

4b9b3361

Ответ 1

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

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

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

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