猫鼬:suretyIndex在insertMany

时间:2018-12-31 12:39:58

标签: mongodb indexing mongoose

我在架构中设置了两个复合索引

(...)
ModelSchema.index({"field1":1, "field2":1, "field3": 1, "field4": 1})
ModelSchema.index({"field1":1, "field2":1, "field3": -1, "field4": -1}) 
module.exports = mongoose.model('Model', ModelSchema)

然后我打电话

Model.insertMany(itemsArray)

在mongo shell中,我可以看到两个索引都已创建。但是,当我尝试查询带有第二个索引提示的集合时,出现了错误。

所以我要做的是打开猫鼬调试

mongoose.set('debug', true)

在日志中,我可以看到操作的顺序是这样的:

Mongoose: models.ensureIndex({"field1":1, "field2":1, "field3": 1, "field4": 1})
Mongoose: models.insertMany([....])
(...other operations of my code happening here)
Mongoose: models.ensureIndex({"field1":1, "field2":1, "field3": -1, "field4": -1}) 
Mongoose: models.indexInformation({ full: true })

所以,在我看来,两件事正在发生:

  • 要在确保第二个索引之前进行插入
  • 索引已经异步执行,而我的代码已经在执行

在将项目插入集合中之前,如何保证两个索引都得到保证?

0 个答案:

没有答案