2011-10-11 84 views
2

考慮MongoDB的以下情形:MongoDB:使用多個併發編寫器獲取最後插入文檔的ObjectId?

三位作者(A,B,C)將文檔插入到同一個集合中。

A會插入第一,其次是B,其次是C.

我們如何能保證檢索他插入文檔的ObjectId,而不是B的文檔或C的文件?我們是否需要序列化寫操作(即只允許B在A插入並檢索ObjectId後寫入),還是MongoDB爲此場景提供了一些本機功能?

謝謝!

我們正在使用Rails。

回答

0

這裏的正常模式是驅動程序分配ObjectId,然後在服務器獲取它之前知道插入的內容。

+0

也findAndModify命令返回分配的對象ID;你會做一個upsert。 http://www.mongodb.org/display/DOCS/findAndModify+Command –

0

在插入文檔之前,您可以在客戶端應用程序(編寫器)中生成_id值。這樣您就不需要依靠生成ObjectId的服務器來檢索正確的值。大多數MongoDB語言驅動程序會自動爲您執行此操作,如果您將_id留空。

相關問題