首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在Mongoose中动态地向我的模式添加索引吗?

我可以在Mongoose中动态地向我的模式添加索引吗?
EN

Stack Overflow用户
提问于 2016-11-23 12:09:14
回答 1查看 5.4K关注 0票数 3

例如,我有以下文件结构:

代码语言:javascript
复制
{
    "subject":"Joe owns a dog", 
    "content":"Dogs are man's best friend", 
    "likes": 60, 
    "year":2015, 
    "language":"english"
}

该模式将是:

代码语言:javascript
复制
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”中搜索。改为:

代码语言:javascript
复制
schema.createIndex({"subject": "text", "content": "text"});

你觉得这有可能吗?

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-23 12:26:26

答案是肯定的,您可以动态构建索引。

使用ensureIndex(...); mongoDB函数。

若要删除索引,请使用dropIndexes(...); mongoDB函数。

但我警告你,操纵索引是一个重要的行动,这将对表演产生重大影响,这取决于你收藏的规模。

默认情况下,mongoDB使用前台方法创建索引,查看mongoDB对它的看法:

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

因此,如果您真的想动态创建索引,也许应该考虑让mongoDB在后台创建索引:

对于可能长时间运行的索引生成操作,请考虑后台操作,以便MongoDB数据库在索引生成操作期间仍然可用。

以下是关于索引的完整mongoDB文档

ensureIndex(.)文档

dropIndexes(.)文档

getIndexes(.)文档

如何从猫鼬直接调用mongoDB方法

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40764190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档