繁体   English   中英

如何为单个集合动态更改 mongodb 中的文本索引?

[英]How to dynamically change the text index in mongodb for a single collection?

是否可以在 mongodb 上的单个集合上动态更改文本索引搜索? 我最初在我的集合的first.text字段上有一个$text索引,但是当用户按下按钮时,我想切换为只允许在second.text字段上进行文本搜索。 我知道一次只能在 mongodb 集合上创建一个文本索引。

为简单起见,这是我的集合架构的示例,我只是想获得有关是否可以动态更改而不放弃任何性能成本的反馈:

{
    first : {
        text : 'search here'
    },
    second : {
        text : 'search ONLY here after a button press'
    },
}

您可以制作on_pre_GET挂钩并使用ensureIndex(...)来创建索引或使用dropIndexes(...)删除索引

但是操作索引是一个主要的动作,它对性能有巨大的成本。 mongoDb 说:

默认情况下,创建索引会阻止对数据库的所有其他操作。 在集合上构建索引时,在索引构建完成之前,保存集合的数据库不可用于读取或写入操作

您可以在每个字段上创建 REGULAR 索引并使用 $regex,例如:

?where={"first.text": {"$regex": ".*search.*"}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM