Comprobé el código fuente de monje y finalmente lo hice funcionar. Incluso code documentation dice cómo debería ser, pero no es visible desde documentation en la web de monje.
/**
* 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
*/
Esto significa que puede especificar consulta y actualización como parámetros independientes, además de opciones como tercer parámetro:
notescollection.findAndModify(
{ "_id": id },
{ "$set": {
"title": title,
"content": content
}},
{ "new": true, "upsert": true },
function(err,doc) {
if (err) throw err;
console.log(doc);
}
);
O puede especificar consulta y actualización como campos del primer parámetro, más opciones como segundo parámetro:
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);
}
);
Para más información sobre las fuentes de verificación findAndModify función en el archivo collections.js.