2010-07-16 43 views
1

我在MongoDB中有一個涉及大量電子郵件的數據集,我需要能夠向該集合添加電子郵件並能夠檢查某些電子郵件是否在集合中。我想到這樣的文件結構:MongoDB中的大集合實現

{'key':'foo','emails':['[email protected]','[email protected]',...]}

並使用$ addToSet和$ in。但問題是,Mongo有4MB的文件限制,如果有很多電子郵件,它可能是不夠的。我可以將它分爲信息鍵/電子郵件部分,但我擔心它會使匹配(因爲電子郵件現在不在一個地方)並插入(因爲我需要檢查唯一性)較慢。那麼,最好的辦法是什麼?

回答

1

取決於您要使用多少組電子郵件,您可以將每組電子郵件作爲一個集合,其中每個文檔僅由電子郵件地址組成。然後,您可以在電子郵件地址創建唯一索引:

db.foo.ensureIndex({email:1},{unique:true})

+0

有多少套,每一個都有自己的密鑰(搜索是withis使用相同的密鑰電子郵件)。索引可能工作,但我擔心它會比較慢,因爲電子郵件不會被存儲在一起。 – StasM 2010-07-17 06:25:30

+0

如果你只關心一個系列中的獨特性,那麼創建一個獨特的索引就像它會得到的一樣快。這正是使用索引的目的。 – 2010-07-18 23:10:11