MongoDB:只创建一个唯一属性的索引



我有一个users集合:

{
email: string;
name: string;
surname: string;
}

我想使email,namesurname索引以提高搜索速度,但只有email是唯一的字段,例如:

// email as unique
db.users.createIndex( { "email": 1 }, { unique: true } );
// name and surname are just index
db.users.createIndex( { "name": 1, "surname": 1 } );

怎么做到的?

边注:搜索它是通过单个或多个字段…

根据您的搜索需求创建字段索引。

如果单独使用namesurname进行搜索,则创建两个单字段索引

如果您同时搜索namesurname(按此顺序),那么创建一个包含两个字段的复合索引:{ name: 1, surname: 1 }。这个复合索引将同时包含namesurname,也只包含name。例如,以下两个查询都使用索引:

db.collection.find({ name: "John", surname: "Doe" })
db.collection.find({ name: "John" })

如果字段的顺序是surnamename,那么索引应该在{ surname: 1, name: 1 }上。当搜索单个字段时,这也将涵盖仅使用surname的搜索。例如,这两个查询受益于索引:

db.collection.find({ name: "John", surname: "Doe" })
db.collection.find({ surname: "Doe" })

最后,email上的索引作为唯一的索引既适用于搜索,也适用于在字段上应用唯一性。

:

  • 复合索引:参见前缀子主题。

您可以通过在查询上生成查询计划来验证索引是否用于特定查询-使用explain方法。

相关内容

最新更新