как получить возвращаемое значение 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
