findAndModify () работает, но эквивалентный update () не работает? - PullRequest
0 голосов
/ 24 ноября 2011

Существующие данные: {"posts": [{"a": {"t": 2}}]}

db.users.findAndModify ({query: {"posts.a": {"$ exist": true}}, обновление: {"$ push": {"posts. $. A.test": {" d ": 2}}}})

Данные после команды: {"posts": [{"a": {"t": 2, "test": [{"d": 2}]}}]}

Это правильно. Однако точно такая же команда не работает как update ():

> db.users.update({{"posts.a": {"$exists" : true} }, 
                   {"$push" : {"posts.$.a.test": {"d" : 2}}}, true, false })

Вывод: четверг, 24 ноября 12:07:02 Синтаксическая ошибка: недопустимый идентификатор свойства (оболочка): 1

Почему бы и нет?

1 Ответ

3 голосов
/ 24 ноября 2011

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

db.users.update({{"posts.a": {"$exists" : true} }, 
                {"$push" : {"posts.$.a.test": {"d" : 2}}}, true, false })

следует читать

db.users.update({"posts.a": {"$exists" : true} }, 
                {"$push" : {"posts.$.a.test": {"d" : 2}}}, true, false)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...