количество обновленных объектов с использованием собственного клиента node mongodb

У меня есть следующий запрос обновления MongoDB, запущенный в Node.js через собственный клиент MongoDB. Запрос работает правильно - я вижу, как объекты изменяются в моей MongoDB после запуска этого кода:

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

Я хотел бы знать, какое количество записей было обновлено в MongoDB после моего запроса. Я видел, что могу проверить это, запустив getLastError в MongoDB, но я не уверен, как это сделать из Node.js с помощью собственного клиента.

Любые подсказки, как это сделать? Есть ли другой способ, кроме вызова getLastError?


person Lukasz Indyk    schedule 03.03.2013    source источник


Ответы (1)


Второй параметр обратного вызова 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 можно найти здесь.

person JohnnyHK    schedule 03.03.2013