getLastError

在本页面

Definition

返回* current connection *上先前写操作的错误状态。

getLastError使用以下原型形式:

{ getLastError: 1 }

getLastError使用以下字段:

Field Type Description
j boolean 如果为true,则在返回之前 await 下一个日志提交,而不是 await 整个磁盘刷新。如果mongod没有启用日记功能,则此选项无效。如果为写入操作启用了此选项,则mongod不超过当前commitIntervalMs的 1/3 *,然后再将数据写入日志。
w 整数或字符串 使用复制运行时,这是返回之前要复制到的服务器数。 w值 1 表示仅主要。 w的值为 2 包括主要的和至少一个辅助的,依此类推。代替数字,您还可以将w设置为majority来指示该命令应 await,直到最新的写操作传播到大多数有表决权的副本集成员为止。


在版本 3.0 中进行了更改:在以前的版本中,majority引用了副本集的所有成员的大多数,而不是多数投票成员。
如果使用w,则还应该使用wtimeout。在不提供wtimeout的情况下为w指定值可能会导致getLastError无限期阻塞。
| wtimeout |整数|可选。毫秒。指定一个毫秒值,以控制 await 写传播完成的时间。如果复制未在给定的时间内完成,则getLastError命令将返回并显示错误状态。

See also

Write Concern

Output

每个getLastError()命令都会返回一个文档,其中包含下面列出的字段的子集。

Note

true的值表示先前的操作没有产生错误。

errmsg包含错误的描述。 errmsg仅在前面的操作出错时出现。

对于删除操作,匹配文档的数量将等于删除的数量。

对于更新操作,如果该操作未更改文档,例如将字段的值设置为其当前值,则匹配的文档数可能少于实际修改的文档数。如果更新包含upsert:true选项并导致创建新文档,则n返回插入的文档数。

如果报告通过findAndModify操作发生的更新或删除,则n0

在 2.6 版中进行了更改:仅当_idObjectId时,MongoDB 的早期版本才包含upserted

See

Write Concern了解有关w个值的更多信息。

Examples

确认复制到两个副本集成员

下面的示例确保前面的操作已复制到两个成员(主要成员和一个其他成员)。该命令还指定了5000毫秒的超时时间,以确保如果 MongoDB 无法满足请求的写入关注,:dbcommand:getLastError 命令不会永远阻塞:

db.runCommand( { getLastError: 1, w: 2, wtimeout:5000 } )

确认复制到多数副本集

下面的示例确保写入操作已复制到副本集的大多数有投票权的成员。该命令还指定了5000毫秒的超时时间,以确保如果 MongoDB 无法满足请求的写入关注,:dbcommand:getLastError 命令不会永远阻塞:

db.runCommand( { getLastError: 1, w: "majority", wtimeout:5000 } )

在 2.6 版中进行了更改:在Master/Slave部署中,MongoDB 将w: "majority"等同于w: 1。在 MongoDB 的早期版本中,w: "majority"master/slave部署中产生错误。

首页