如何在此结构上设置索引?

时间:2019-06-17 08:14:42

标签: node.js mongodb mongoose indexing

我需要帮助来解决此解决方案。 我在节点js中有这样的结构(我用猫鼬):

var TestSchema = new mongoose.Schema({
        title: {
            type: String,
            trim: true,
        },
        refBusinesId: {
            type: ObjectId,
            required: true,
        },
    })

TestSchema.index({ title: 'text' });

我使用下面的代码,一切都很好:

await Test.find({ refBusinesId: ID, $text: { $search: TEXT} })

但是有几个问题适合我,我正在寻找问题的答案,

我在MongoDB Compass中查看了该查询的结果,在我看来,该查询未完全索引(参见照片)

MongoDB Compass Screen

我想使用公司ID和$ text(标题字段)在公司中进行搜索,我想知道是否有一种方法可以在此查询中实现最佳性能的索引编制?

1 个答案:

答案 0 :(得分:0)

我怀疑您会需要像{ refBusinesId: 1, title: 'text' }这样的复合索引,以便mongo只能查看相关的业务文档以进行标题搜索。

请注意,集合一次只能有1个文本索引,因此,如果要添加此索引,则需要删除现有的文本索引。

https://docs.mongodb.com/manual/core/index-text/具有有关文本索引,带有复合索引的文本索引等的更多详细信息。