`
风雪涟漪
  • 浏览: 496901 次
  • 性别: Icon_minigender_1
  • 来自: 大连->北京
博客专栏
952ab666-b589-3ca9-8be6-3772bb8d36d4
搜索引擎基础(Search...
浏览量:8766
Ae468720-c1b2-3218-bad0-65e2f3d5477e
SEO策略
浏览量:17668
社区版块
存档分类
最新评论

MongoDB Last Error 命令

阅读更多

Last Error Commands

当写入数据库,MongoDB默认的情况下不会响应结果。但是MongoDB提供了命令来保证这些操作是成功的。
当在safe的模式下保存和更新数据库,一些驱动就会自动调用这些命令。我们这详细讲解getlasterror是如何运行的。

getlasterror

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



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics