考慮MongoDB的以下情形:MongoDB:使用多個併發編寫器獲取最後插入文檔的ObjectId?
三位作者(A,B,C)將文檔插入到同一個集合中。
A會插入第一,其次是B,其次是C.
我們如何能保證檢索他插入文檔的ObjectId,而不是B的文檔或C的文件?我們是否需要序列化寫操作(即只允許B在A插入並檢索ObjectId後寫入),還是MongoDB爲此場景提供了一些本機功能?
謝謝!
我們正在使用Rails。
考慮MongoDB的以下情形:MongoDB:使用多個併發編寫器獲取最後插入文檔的ObjectId?
三位作者(A,B,C)將文檔插入到同一個集合中。
A會插入第一,其次是B,其次是C.
我們如何能保證檢索他插入文檔的ObjectId,而不是B的文檔或C的文件?我們是否需要序列化寫操作(即只允許B在A插入並檢索ObjectId後寫入),還是MongoDB爲此場景提供了一些本機功能?
謝謝!
我們正在使用Rails。
這裏的正常模式是驅動程序分配ObjectId,然後在服務器獲取它之前知道插入的內容。
在插入文檔之前,您可以在客戶端應用程序(編寫器)中生成_id
值。這樣您就不需要依靠生成ObjectId的服務器來檢索正確的值。大多數MongoDB語言驅動程序會自動爲您執行此操作,如果您將_id留空。
也findAndModify命令返回分配的對象ID;你會做一個upsert。 http://www.mongodb.org/display/DOCS/findAndModify+Command –