[英]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.