2012-11-19 46 views
0

有沒有辦法更新(或刪除)符合特定條件的許多文檔,並獲取實際更新/刪除文檔(或這些文檔的其他字段)的ID列表?我不能簡單地事先查詢符合我的標準的文檔,因爲我需要對此操作進行原子操作。而且我無法使用findAndModify,因爲它一次只能處理一個文檔,因爲往返時間太慢。建議?更新文檔列表

回答

0

MongoDB只支持單個文檔的原子操作。
http://www.mongodb.org/display/DOCS/Atomic+Operations

做到這一點的唯一方法,就是去做你說你沒有一個:

首先查詢查找ID對我們的查詢集合:

db.things.find({"name":"john"}, {_id:1}); 

然後,使用相同的查詢刪除:

db.things.remove({"name":"john"}, {_id:1}); 

不理想,而不是原子,但它是一樣好,你會得到在這scena里約熱內盧。

+0

不,原子對我來說非常重要。因此,如果沒有其他解決方案,最好使用findAndModify循環......我的意思是我必須絕對確定,我確切知道返回的ID與實際更新/刪除的文檔相對應。正如你所看到的,我的意思是讀取/更新操作對的原子性,而不是一堆更新。 –

+0

如果原子性真的很重要,那麼也許你最好使用RDBMS。不同的馬匹爲不同的課程。 – Alex