MongoDB Last Error 命令
getlasterror是验证最后一次连接数据库操作。可以通过以下几种方式来进行调用:
> db.$cmd.findOne({getlasterror:1})或者
> db.runCommand("getlasterror")或者用shell辅助方法
> db.getLastError()
更多的命令查看?command documentation.
驱动各个驱动都支持?getlasterror??以及许多还提供了"safe"模式的操作。如果你使用Python,你可以使用如下语句来自动调用getlasterror。?
collection.save({"name": "MongoDB"}, safe=True)如果保存失败,异常就会抛出。关于"safe"模式,详情请看各个驱动的文档。
getlasterror 主要用于写操作 (虽然也可以用于其他命令或查询语句. 默认情况下,写操作不会有任何返回:在写的过程中,这样可以避免客户端等待与服务器互相通讯。如果要返回代码,可以调用getLastError。
如果用多个连接写入数据到MongoDB中,调用getLastError就很重要了,要确保每个连接都把数据成功写入到数据库中。如果你想通过连接#1写入数据并且从连接#2返回这些写入的数据,你可以在写入连接#1之后,通过调用getLastError来实现。
注意: ?mongo wire protocol?killCursors 操作不支持 getlasterror.? (如果你是 驱动?developers一定要注意?.)
参数fsync当启动mongod,并没有附加参数--dur的时候, ?fsync 参数再返回之前会强迫数据库进行同步所有文件。当启动mongod,附加--dur的时候,fsync参数返回之前会等待下一组的提交。
> db.runCommand({getlasterror:1,fsync:true}){ "err" : null, "n" : 0, "fsyncFiles" : 2, "ok" : 1 }w写操作成功复制N个服务器之前,写操作都是阻塞状态。wtimeout?和w一起使用,指定超时时间。
> db.getLastError(2, 5000) // w=2, timeout 5000ms