复合索引可用于在MongoDB中搜索单个字段吗?

MK *_*ung 3 indexing mongodb

如果我创建以下复合索引:

{'username': 1, 'uid': 1}

可以利用该索引中使用,如果我只跟搜索uid一样 db.users.find({'uid': '12345'})

因为生成两个单独的单个索引似乎会占用更多内存。

Ana*_*lan 5

只要您通过作为索引字段左子集的字段进行查询,MongoDB就会自动使用索引。也就是说,如果您有一个类似{a:1,b:1,c:1}的索引,则所有3个查询db.coll.find({a:“ xxx”}),db.coll.find({a :“ xxx”,b:“ yyy”})和db.coll.find({a:“ xxx”,b:“ yyy”,c:“ zzz”})假定没有索引其他索引。

  • @MK,如果查询b,将不使用索引。也就是说,db.coll.find({b:“ yyy”})将不使用索引{a:1,b:1,c:1}。该查询只能以b开头的索引。 (2认同)