问题是一个非常简单的问题,你可以在一个集合中拥有多个索引吗?我想你可以,但每次我搜索多个索引时,我都会对复合索引进行解释,这不是我想要的。
我想要做的就是确保我可以有两个简单的单独索引。 (我使用PHP,我将使用PHP代码格式,但我理解
db.posts.ensureIndex({ my_id1: 1 }, {unique: true, background: true});
db.posts.ensureIndex({ my_id2: 1 }, {background: true});
我一次只会搜索一个索引。
复合索引不是我想要的,因为:
一个索引是唯一的,另一个索引不是。
我认为这不是最快的选择。 (打开链接以了解我认为它会变慢的原因。link)
我只是想确保索引能够正常工作。
答案 0 :(得分:2)
您确定可以按照您拥有的方式定义索引。来自MongoDB documentation:
有多少索引?索引通过密钥进行检索,包括有序的顺序检索,非常快。按键更新也更快,因为MongoDB可以非常快速地找到要更新的文档。但是,请记住,每个创建的索引都会为插入和删除添加一定的开销。除了将数据写入基本集合之外,还必须将密钥添加到B-Tree索引。因此,索引最适用于读取次数远远大于写入次数的集合。对于写密集的集合,索引在某些情况下可能适得其反。大多数集合都是读取密集型的,因此在大多数情况下索引是一件好事。
我还建议您在运行两个字段的查询时查看how Mongo will decide what index to use。
另请查看他们的Indexing Advice and FAQ页面。它会解释only one index per query,selectivity等内容。
P.S。来自10gen的这个slideshare deck表明每个集合有40个索引的限制。