如何使用mongoose获取MongoDB中findAndModify函数的返回值
how to get the return value of findAndModify func in MongoDB with mongoose?
我使用Node.js+mongoose+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
的新值。有办法做到这一点吗?
在options
对象中指定{new:true}
。这将导致findAndModify
的结果值成为应用更新后的文档,然后您可以从中读取amount
的新值。
详细信息如下表所示:http://www.mongodb.org/display/DOCS/findAndModify+命令
我认为您的回调需要接受两个参数,如:function(err, result){
当触发回调时,result
应该包含新文档(如果err
为null)。
我检查了monk的源代码,并最终使其工作。甚至代码文档也说明了它应该是什么样子,但从monk的网站上的文档中看不到它。
/**
* 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 );
}
);
或者,您可以将查询和更新指定为第一个参数的字段,再加上选项作为第二个参数:
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 );
}
);
有关源代码的更多信息,请查看collections.js文件中的findAndModify函数。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- JQuery合并了keyup和focusout两个函数
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 我可以在json对象中添加一个函数吗
- AngularJS:我可以跳过函数参数回调吗
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- jquery点击函数select&取消选择
- 拨打'父亲'函数形式a'儿童'ReactJS中的组件
- Node.js v6.2.0类扩展不是函数错误
- 比较从函数和生成的日期对象
- 在使用 findAndModify 时$set运算符中将函数参数作为字段名称传递
- 如何使用mongoose获取MongoDB中findAndModify函数的返回值