我正在设计一个User文档存储Skill ids的模式。Skill文档如下所示
Skill = {
id: ObjectId
title: String
description: String
}
User = {
id: ObjectId
skills: [ObjectId]
}在前端,用户可以通过搜索Skill的标题来添加它。因此,我用{id: 1, title: "text"}编制了技能集合索引。当我们将文本索引和数字索引结合起来时,我想知道排序是否重要。
发布于 2020-10-12 12:54:34
是的,这有很大的不同,关于复合文本索引的文档说
$text搜索,查询谓词必须在前面的键上包含相等匹配条件。这意味着,如果您执行{id: 1, title: 'text'},您只能在标题上使用文本索引,如果还将搜索限制在单个id中。
如果您执行{title: 'text', id: 1},您将能够自己搜索文本标题,或者进一步受限于id,或者检索文本搜索结果的匹配id。
您确定需要索引中的id列吗?为什么不只是文本索引呢?
发布于 2020-10-12 11:49:46
是的,这确实很重要。直接从文档
复合索引中列出的字段的顺序非常重要。索引将包含对文档的引用,这些文档首先根据项目字段的值排序,而在项目字段的每个值中,则根据库存字段的值进行排序。有关更多信息,请参见排序顺序。
在当前结构中,如果只查询title字段而不对id字段进行限制(没有查询),则无法利用索引。
https://stackoverflow.com/questions/64314392
复制相似问题