情况: 我有用户信息的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指数(阅读了一下,似乎是它可以搜索“最近的“索引条目,不确定这是我应该使用的方式)
你们能给我一些关于这个特定用例索引选择的提示吗?
如果你不知道它是什么,那么你根本就不用它。我认为最好的文件很清楚,不是吗?我的意思是你实际上包括了确认你的问题要做什么的那部分。 –