getLastError

在本页面

Definition

  • getLastError
    • 在 2.6 版中进行了更改:write operations的新协议将写入问题与写入操作集成在一起,从而无需单独的getLastError大多数写方法现在返回写操作的状态,包括错误信息。在以前的版本中,Client 端通常结合使用getLastError和写入操作来验证写入是否成功。

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

getLastError使用以下原型形式:

{ getLastError: 1 }

getLastError使用以下字段:

FieldTypeDescription
jboolean如果为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

Output

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

Note

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

  • getLastError. err

    • 除非发生错误,否则errnull。如果前面的操作有错误,则err包含一个标识错误的字符串。
  • getLastError. errmsg

    • 2.6 版的新功能。

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

  • getLastError. code

    • code报告先前操作的错误代码。有关错误的说明,请参见errerrmsg
  • getLastError. connectionId

    • 连接的标识符。
  • getLastError. lastOp

    • 当针对副本集成员发出并且先前的操作是写入或更新时,lastOp是更改oplog中的* optime *时间戳。
  • getLastError. n

    • 如果前面的操作是更新或删除操作,但不是findAndModify操作,则n报告更新或删除操作匹配的文档数。

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

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

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

  • getLastError. syncMillis

    • syncMillis是 await 写入磁盘操作(例如写入日志文件)所花费的毫秒数。
  • getLastError. shards

    • 在写操作后针对分片群集发出时,shards标识写操作中目标的分片。仅当写入操作针对多个分片时,才在输出中存在shards
  • getLastError. singleShard

    • 在写操作之后针对分片群集发出时,标识写操作中目标的分片。 singleShard仅在写入操作恰好针对一个分片的情况下存在。
  • getLastError. updatedExisting

  • getLastError. upserted

    • 如果更新导致插入,则upserted是文档的_id字段的值。

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

  • getLastError. wnote
    • 如果设置,则wnote表示先前操作的错误与在getLastError上使用w参数有关。

See

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

  • getLastError. wtimeout

  • getLastError. waited

  • getLastError. wtime

  • getLastError. writtenTo

    • 如果要写入副本集,则writtenTo是一个数组,其中包含基于命令中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部署中产生错误。