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



是否可以在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.*"}}

最新更新