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


указать {new:true} на


Я проверил исходный код Монка и, наконец, сделал это. Даже документирование кода говорит, как это должно быть, но это не видно из документация в сети Монка.

/**
 * 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