首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Mongoose不创建索引

Mongoose不创建索引
EN

Stack Overflow用户
提问于 2012-09-17 11:35:05
回答 5查看 18.7K关注 0票数 32

正在尝试创建MongoDB索引。使用Mongoose ODM,在下面的模式定义中,我将username字段设置为唯一索引。集合和文档都被正确创建了,只是索引不起作用。所有的文档都说应该在启动时运行ensureIndex命令来创建任何索引,但是没有创建任何索引。如果重要的话,我会使用MongoLab来托管。我也多次放弃了这个收藏。出什么问题了。

代码语言:javascript
复制
var schemaUser = new mongoose.Schema({
    username: {type: String, index: { unique: true }, required: true},
    hash: String,
    created: {type: Date, default: Date.now}
}, { collection:'Users' });

var User = mongoose.model('Users', schemaUser);
var newUser = new Users({username:'wintzer'})
newUser.save(function(err) {
    if (err) console.log(err);
});
EN

回答 5

Stack Overflow用户

发布于 2012-09-17 12:13:32

'index'事件挂接到模型上,以查看异步创建索引时是否发生了任何错误:

代码语言:javascript
复制
User.on('index', function(err) {
    if (err) {
        console.error('User index error: %s', err);
    } else {
        console.info('User indexing complete');
    }
});

另外,通过调用以下命令来启用Mongoose的调试日志:

代码语言:javascript
复制
mongoose.set('debug', true);

调试日志将显示它为创建索引而进行的ensureIndex调用。

票数 30
EN

Stack Overflow用户

发布于 2019-01-11 13:48:24

它可能会解决你问题

代码语言:javascript
复制
var schema = mongoose.Schema({
speed: Number,
watchDate: Number,
meterReading: Number,
status: Number,
openTrack: Boolean,
 });
schema.index({ openTrack: 1 });
票数 2
EN

Stack Overflow用户

发布于 2018-08-14 11:35:06

当我在不起作用的模型上挂接索引事件时,我开始在控制台上收到一个错误,指出“字段'retryWrites‘对于索引规范无效”。我的应用程序中唯一引用'retryWrites‘的地方是在我的连接字符串的末尾。我删除了它,重新启动了应用程序,索引重建成功。我把retryWrites放回原处,重启了应用程序,错误就消失了。我的Users集合(给我带来了问题)是空的,所以当我使用Postman创建新记录时,我看到(使用Mongo Compass社区)创建的新记录,索引现在出现了。我不知道retryWrites是做什么的--今天是我使用它的第一天--但它似乎是我问题的根源。

哦,我为什么要用它呢?它被固定在我从Mongo的Atlas Cloud站点拉来的连接线上。它看起来很重要。嗯。

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

https://stackoverflow.com/questions/12452865

复制
相关文章

相似问题

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