как получить возвращаемое значение findAndModify функции в MongoDB с помощью мангуста?
Я использую Node.js + Мангуст+MongoDB вот так:
SomeModelSchema.statics.findAndModify = function (query, sort, doc, options, callback) {
return this.collection.findAndModify(query, sort, doc, options, callback);
};
SomeModel.findAndModify({}, [], { $inc: { amount: 1 } }, {}, function (err) {
if (err) throw err;
});
увеличить amount
успешно, но я хочу получить новое значение amount
без снова делать запрос. Есть ли способ сделать это?
2 ответов
Я проверил исходный код Монка и, наконец, сделал это. Даже документирование кода говорит, как это должно быть, но это не видно из документация в сети Монка.
/**
* findAndModify
*
* @param {Object} search query, or { query, update } object
* @param {Object} optional, update object
* @param {Object|String|Array} optional, options or fields
* @param {Function} callback
* @return {Promise}
* @api public
*/
Это означает, что вы можете либо указать запрос и обновление как отдельные параметры, плюс опции в качестве третьего параметра:
notescollection.findAndModify(
{ "_id": id },
{ "$set": {
"title": title,
"content": content
}},
{ "new": true, "upsert": true },
function(err,doc) {
if (err) throw err;
console.log( doc );
}
);
или вы можете указать запрос и обновление as поля первого параметра, плюс опции как второй параметр:
notescollection.findAndModify(
{
"query": { "_id": id },
"update": { "$set": {
"title": title,
"content": content
}}
},
{ "new": true, "upsert": true },
function(err,doc) {
if (err) throw err;
console.log( doc );
}
);
дополнительные источники проверки findAndModify