2010-06-02 127 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