情況: 我有用戶信息的mongo db集合。其中包含一些user_email和user_login。這些字段應該是唯一的。 在註冊期間,我想檢查唯一性。我正在做MongoDB複合索引
db.users.find({ $or: [ { user_email: email }, { user_name: name } ] })
如果我會找到一些東西,我可以假設數據不是唯一的。
所以這裏的問題是,用戶表可以是巨大的,我決定創建基於這兩個字段的複合索引。蒙戈文檔說:
當使用$或疑問,一個$的每個條款索引或可以使用其 自己的索引。考慮以下查詢:
db.inventory.find({$或:[{量:{$ LT:20}},{價:10}] })
爲了支持這個查詢,而比一個複合索引,你會 創建量的一種指數,並在價格另一個指數:
db.inventory.createIndex({量:1})
db.inventory.createIndex({價:1} )
MongoDB可以使用除了geoHaystack索引以外的所有其他地方都支持$或子句。
所以現在我有3個選項:
複合索引
兩個指標
geoHaysatck指數(閱讀了一下,似乎是它可以搜索「最近的「索引條目,不確定這是我應該使用的方式)
你們能給我一些關於這個特定用例索引選擇的提示嗎?
如果你不知道它是什麼,那麼你根本就不用它。我認爲最好的文件很清楚,不是嗎?我的意思是你實際上包括了確認你的問題要做什麼的那部分。 –