Nodejs, MongoDB (узел-монгодб-нативный). FindAndModify находит документ, но не обновляет его

Я пытаюсь использовать операцию findAndModify для поиска и обновления документа.

Query: {'socket_id': data.socket_id, 'weapons.type': selectedWeapon, 'battleWeapons.type':selectedWeapon}
Update: {'$inc':{'weapons.$.nums':-1, 'battleWeapons.$.nums':-1}}

У меня есть Doc в моей функции обратного вызова (поэтому он найден по запросу), но в документе MongoDB нет никаких изменений. Та же команда отлично работает в консоли монго. Он меняет все, что мне нужно. Что я делаю не так?

Итак, вся команда выглядит так:


db.collection('users', function (err, collection) {
    var condition = {'socket_id': data.socket_id, 'weapons.type': selectedWeapon, 'battleWeapons.type':selectedWeapon},
    update = {'$inc':{'weapons.$.nums':-1, 'battleWeapons.$.nums':-1}};
    collection.findAndModify(condition, [['_id','asc']], update, {'new': true}, function (err, item) {...
})});

person Aliansys    schedule 14.06.2013    source источник


Ответы (1)


В findAndModify есть еще один параметр, который вы можете установить, чтобы вернуть старый документ (до обновления) или новый документ (после обновления). Я предполагаю, что это должно быть проблемой. Для подтверждения, для существующей команды findAndModify(), после запуска этой команды проверьте этот обновленный документ из консоли mongo, он должен быть изменен.

person Abhishek Kumar    schedule 14.06.2013
comment
Если я запускаю команду в консоли Mongo, все меняется нормально, но если я запускаю скрипт, ничего не меняется, я проверил. Те же значения в БД, тот же документ, что и до операции. - person Aliansys; 14.06.2013