如果 MongoDB collection 中需要多个文本索引怎么办?

What do I do if I need more than one text index in a MongoDB collection?

我在 MongoDB 中名为 Messages 的 collection 有很多带有消息内容和元数据的消息。每条消息都有一个 SenderRecipient id,格式为 UUID,又是 string。在某些用例中,我需要使用相同的 UUID 查询 SenderRecipient,或者仅使用 UUID 查询 Sender 或仅查询 Recipient ],或两者都具有不同的 UUIDs.

我为第一种情况创建了一个文本索引,效果很好,但我也需要在其他情况下进行高效搜索。你有什么建议?我应该tweak/change做什么?我无法在同一 collection 中定义任何其他文本索引,因为截至目前 MongoDB 中的文本索引数量存在限制。

注意:我一开始不知道文本索引并尝试创建常规索引,但查询根本不使用它们,即使我强制使用它们,查询仍然会扫描所有文档,这是没用。

根据 playground,您需要使用 this 创建索引。

这就是它没有使用索引的原因。

db.Message.createIndex({
  "Sender._id": 1
})

您还可以在 Recipient._id 上创建另一个索引。根据您的查询,它将使用索引。

我的意思是当您有两个单独的索引时,即一个在 Sender_id 上,另一个在 Recipient._id 上,当您查询时,将使用各自的索引。

并且您的用例不是全文搜索,因此不要为此使用文本索引。