2010-06-02 240 views
7

我正在使用pecl驱动程序在PHP中使用MongoDB。我的更新很好,但我想在我的函数中构建一些错误检查。MongoDB更新:如何检查更新是成功还是失败?

我在一个非常简单的功能使用lastError()尝试:

​​

但是几乎不管什么我尝试更新(它是否存在与否)我得到这些相同的基本结果:

array(4) { 
    ["err"]=> 
    NULL 
    ["updatedExisting"]=> 
    bool(true) 
    ["n"]=> 
    float(1) 
    ["ok"]=> 
    float(1) 
} 

如何知道更新是成功还是失败?

回答

3

“n”字段是已更新文档的数量,“updatedExisting”表示是否更新了任何文档。您应该能够检查这些字段以查看更新是否成功。

+1

这并不完全是我的意思。无论我将什么放到$ values数组中,无论密钥是否存在(如果它不是简单地将值/密钥对添加到文档中),上面的代码都会高兴地更新数据库。 重新阅读php.net文档我遇到了“安全”选项,并将其添加到上面的代码,所以它现在看起来像这样: $ collection-> update($ query,array('$ set'= > $ values),数组(“safe”=> true)); 但是我每次有意做垃圾更新时仍然会得到相同的结果(NULL,true,1,1)。 – zmg 2010-06-10 01:40:35

3

你怎么知道哪些行受MongoDB更新影响?

与所有写操作,MongoDB中​​命令可以确认更新的写操作的结果,说明如下:

http://docs.mongodb.org/manual/applications/update/

的​​命令返回的最后一次操作的错误状态当前连接。默认情况下,MongoDB不提供确认写入操作成功或失败的响应,客户端通常将getLastError与写入操作组合使用,以确保写入成功。

http://docs.mongodb.org/manual/reference/command/getLastError/#getLastError