如何在 mongodb 中获取更新查询 WriteResult
How to get update query WriteResult in mongodb
我正在 mongodb 中进行更新,但不太熟悉如何在 mongodb 中完成工作。
Todo.update({}, {$set : { tags : []}}, false, true);
如何获得 WriteResult
?我想知道 nMatched
和 nModified
值。
我尝试了以下但它不起作用。
var updateResult = Todo.update({}, {$set : { tags : ['test']}}, false, true);
(function(updateResult){
console.log('Size of match: ' + updateResult.nMatched);
console.log('Size of modified: ' + updateResult.nModified);
})();
这是你的问题,因为 updateResult
在你自己调用的匿名函数中是未定义的,因为你没有传递任何东西给它。 (在 mongoshell 中也没有 console.log
,但它不是那么重要)。您必须将 updateResult 作为参数传递给函数。像这样:
(function(r){
print('Size of match: ' + r.nMatched);
print('Size of modified: ' + r.nModified);
})(updateResult);
然后你会得到这样的东西:
Size of match: 1
Size of modified: 0
首先,重要的是要了解 Todo.update
是一个异步函数,它将其结果传递给回调函数而不是返回它。
但是 Mongoose update
函数也以不同于 shell 的方式获取其参数。
因此您的代码应该如下所示:
Todo.update({},
{$set: {tags: []}},
{upsert: false, multi: true},
function(err, numberAffected, rawResponse) {
console.log('Number of docs modified: ' + numberAffected);
});
回调的 rawResponse
参数包含来自 Mongo 的完整响应,但这仅在使用 upsert
时有用。
我正在 mongodb 中进行更新,但不太熟悉如何在 mongodb 中完成工作。
Todo.update({}, {$set : { tags : []}}, false, true);
如何获得 WriteResult
?我想知道 nMatched
和 nModified
值。
我尝试了以下但它不起作用。
var updateResult = Todo.update({}, {$set : { tags : ['test']}}, false, true);
(function(updateResult){
console.log('Size of match: ' + updateResult.nMatched);
console.log('Size of modified: ' + updateResult.nModified);
})();
这是你的问题,因为 updateResult
在你自己调用的匿名函数中是未定义的,因为你没有传递任何东西给它。 (在 mongoshell 中也没有 console.log
,但它不是那么重要)。您必须将 updateResult 作为参数传递给函数。像这样:
(function(r){
print('Size of match: ' + r.nMatched);
print('Size of modified: ' + r.nModified);
})(updateResult);
然后你会得到这样的东西:
Size of match: 1
Size of modified: 0
首先,重要的是要了解 Todo.update
是一个异步函数,它将其结果传递给回调函数而不是返回它。
但是 Mongoose update
函数也以不同于 shell 的方式获取其参数。
因此您的代码应该如下所示:
Todo.update({},
{$set: {tags: []}},
{upsert: false, multi: true},
function(err, numberAffected, rawResponse) {
console.log('Number of docs modified: ' + numberAffected);
});
回调的 rawResponse
参数包含来自 Mongo 的完整响应,但这仅在使用 upsert
时有用。