2011-09-25 111 views

回答

0

單個find不應該返回重複的結果,因爲在Mongo中沒有連接這樣的事情,所以沒有任何情況下單個文檔將被查詢返回兩次。所以你所描述的事情聽起來應該是永遠不會發生的 - 但是如果沒有更多的細節,很難說。

但是,有一種可能性是find返回一個打開的遊標,因此,例如,如果您正在迭代大量文檔並隨時更新它們,則最終可能會在稍後再次獲取相同的文檔。原因是您的更新可能會增加文檔的大小,使其不再適合其擁有的空間,因此它必須在收集結束時重新分配空間,之後再次由光標。如果這就是你正在做的事情,你可能需要考慮以不同的方式進行更新。

1

如果只想所有不同user._id,使用db.users.distinct(「_ ID」)

,如果你想用不同的_id整個記錄你必須考慮的策略2之間進行選擇的使用相同的用戶記錄._id 您可以使用組或地圖縮小但您必須考慮,當有2個用戶具有相同的_id時,我想要什麼。

順便說一下,_id通常由mongodb生成,並且應該是唯一的。如果您有兩個相同的ID,您或者您的收藏夾中插入率非常高,或者您自己生成_id。 是否有任何特殊的原因你正在產生非獨特的_id?

+0

不應該_id字段總是唯一的,不管它是如何生成的?它說「對於集合中的每個文檔,_id必須是唯一的」(來自http://www.mongodb.org/display/DOCS/Object+IDs)。 – burger

+0

你是對的,他們應該是獨一無二的:http://www.mongodb.org/display/DOCS/Object+IDs – kamaradclimber