获取更新的文档数量



在mongo中是否有一个函数返回在更新语句中更新的文档数?

我试图使用count(),但显然更新语句只返回真或假,所以我认为我得到一个字符串的计数。

谢谢

使用getLastError命令获取有关操作结果的信息。

我不知道ruby驱动程序,但大多数驱动程序自动在'安全模式'下完成此操作。在安全模式下,每次写入都将检查getLastError的结果,以确保写入成功。更新操作应该返回一个看起来像JSON对象的对象,它包含更新的文档的数量(n)。你可以微调安全模式的设置,但要注意默认模式是"触发后忘记",所以安全模式在很多情况下都是一个好主意。

在shell中,

> db.customers.update({}, {$set : {"Test" : "13232"}}, true, true);
> db.runCommand( "getlasterror" )
{
    "updatedExisting" : true,
    "n" : 3,
    "connectionId" : 18,
    "err" : null,
    "ok" : 1
}

这里,我更新了n = 3文档。请注意,默认情况下,mongodb中的更新操作仅适用于第一个匹配的文档。在shell中,第四个参数用于表示我们想要更新多个文档。

对于mongoDB的最新版本,您可以保存update命令的结果并查找属性modifiedCount。请注意,如果更新操作没有导致文档的更改,例如将字段的值设置为当前值,则该值可能小于查询中匹配的文档数。

例如(在JS中):

var updateResult = await collection.updateOne( .... )
if(updateResult.modifiedCount < 1)  throw new Error("No docs updated");

响应对象中还有两个字段result.nresult.nModified,分别告诉您匹配的文档数量和更新的文档数量。下面是mongoDB返回的响应对象的一部分

result: {
    n: 1,
    nModified: 1,
    ...
  },
...
modifiedCount: 1

更多信息在这里:https://docs.mongodb.com/manual/reference/command/update/

相关内容

  • 没有找到相关文章

最新更新