例如,我有以下文件结构:
{
"subject":"Joe owns a dog",
"content":"Dogs are man's best friend",
"likes": 60,
"year":2015,
"language":"english"
}该模式将是:
var schema = new Schema({
subject: {type: String},
content: {type: String},
likes: {type: int},
year: {type: int},
language: {type: String}
}
schema.createIndex({"subject": "text"});我是否可以动态删除索引并创建另一个具有更多字段的索引?
因此,如果现在它在subject字段中搜索关键字,我想动态地更改它,并在"subject“和"content”中搜索。改为:
schema.createIndex({"subject": "text", "content": "text"});你觉得这有可能吗?
非常感谢。
发布于 2016-11-23 12:26:26
答案是肯定的,您可以动态构建索引。
使用ensureIndex(...); mongoDB函数。
若要删除索引,请使用dropIndexes(...); mongoDB函数。
但我警告你,操纵索引是一个重要的行动,这将对表演产生重大影响,这取决于你收藏的规模。
默认情况下,mongoDB使用前台方法创建索引,查看mongoDB对它的看法:
默认情况下,创建索引将阻止数据库上的所有其他操作。在集合上生成索引时,保存集合的数据库在索引生成完成之前不可用于读或写操作。
因此,如果您真的想动态创建索引,也许应该考虑让mongoDB在后台创建索引:
对于可能长时间运行的索引生成操作,请考虑后台操作,以便MongoDB数据库在索引生成操作期间仍然可用。
https://stackoverflow.com/questions/40764190
复制相似问题