如何解决如果 MongoDB 集合中需要多个文本索引,我该怎么办?
我在 MongoDB 中名为 Messages
的集合有很多带有消息内容和元数据的消息。每条消息都有一个 Sender
和 Recipient
id,格式为 UUID
,后者又是一个 string
。在某些用例中,我需要使用相同的 Sender
查询 Recipient
和 UUID
,或者仅使用 Sender
或仅使用 Recipient
查询 UUID
},或两者都具有不同的 UUID
。
我为第一种情况创建了一个文本索引,效果很好,但在其他情况下我也需要高效搜索。你有什么建议?我应该调整/改变什么?我无法在同一个集合中定义任何其他文本索引,因为目前 MongoDB 中的文本索引数量存在限制。
注意:我首先不知道文本索引并尝试创建常规索引,但查询根本不使用它们,即使我强制使用它们,查询仍然扫描所有无用的文档。
解决方法
根据 Playground,您需要使用 this 创建索引。
这就是它没有使用索引的原因。
db.Message.createIndex({
"Sender._id": 1
})
您也可以在 Recipient._id
上拥有另一个索引。根据您的查询,它将使用索引。
我的意思是当您有两个单独的索引时,即一个在 Sender_id
上,另一个在 Recipient._id
上,并且当您查询时,将使用各自的索引。
你的用例不是全文搜索,所以不要为此使用文本索引。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。