1

我有以下更新 MongoDB 查询,通过 MongoDB 本机客户端在 Node.js 中运行。查询正常工作 - 运行此代码后,我看到 MongoDB 中的对象正在修改:

collection.update(
    {
      _id : request.query.person,
    },
    {
      $inc: {
        score : 1
      }
    },
    { safe : true},
    this /* "this" is for Step */
  );

我想知道查询后在 MongoDB 中更新的记录数是多少。我已经看到我可以通过在 MongoDB 中运行 getLastError 来检查它,但我不确定如何使用本机客户端从 Node.js 进行检查。

任何提示如何做到这一点?除了调用 getLastError 还有其他方法吗?

4

1 回答 1

3

update回调的第二个参数是受影响文档的数量:

collection.update(
    { _id : request.query.person },
    { $inc: { score : 1 }},
    { safe : true},
    function (err, numAffected) {
        ...
    }
);

原生驱动2.x版本更新:

回调的第二个参数update现在是一个嵌套对象,其中更新的文档数量可以在result.nModified. 但update现在已弃用,因此updateOne应改为使用。

collection.updateOne(
    { _id : request.query.person },
    { $inc: { score : 1 }},
    { safe : true},
    function (err, response) {
        console.log(response.result.nModified);
        // Also available at response.modifiedCount for updateOne, but not update
        console.log(response.modifiedCount);
    }
);

可以在此处找到 2.x 回调参数的文档。

于 2013-03-03T23:52:42.257 回答