2012-03-22 43 views
0

我如何檢查文檔寫入是否完成,因爲mongodb是基於 'fire and forget'的理念?如何檢查文檔寫入或更新已完成?

我可以寫一個這樣的程序:

db.addresses.insert(....) 

db.addresses.find(filter... 

第二條語句的發現是基於在第一步中插入的文件。

我們如何檢查文檔是在對其進行某些操作之前進行檢查的?

回答

1

然後你應該寫在「安全模式」。

安全模式激活時,驅動程序將執行寫入操作,然後要求確認。這基本上使您的數據庫請求吞吐量翻倍,並增加Web請求的處理時間,但您可以確保寫入已成功完成。

我發現在PHP驅動程序使用安全模式下的這個例子中(不知道它是好還是壞。我的代碼在Ruby中,所以所有的PHP看起來破我:))

$insert_options = array("safe" => 2, "fsync" => TRUE); 
$email_array = array("_id" => new MongoId($index), 

      "email" => strtolower(trim($email)), 
      "verified" => 0, 

      "date" => date("Y-m-d G:i:s",time()) 

$this->mongo_db->email->insert($email,$insert_options); 
+0

酷,你的意思是插入/更新/刪除後的下一條語句只有在寫入確認後纔會執行? – 2012-03-22 07:55:51

+0

是的,如果使用安全模式。 – 2012-03-22 08:00:18

+0

謝謝塞爾吉奧.... – 2012-03-22 08:03:33