Javascript 删除收集后,在保存第一条记录时会重新进行收集,但为什么不';它的索引是什么?
下面是我删除mongodb集合的方法。它可以工作,但在保存第一条记录后,将在没有适当索引的情况下重新创建集合 由于我的模型有三个属性Javascript 删除收集后,在保存第一条记录时会重新进行收集,但为什么不';它的索引是什么?,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,下面是我删除mongodb集合的方法。它可以工作,但在保存第一条记录后,将在没有适当索引的情况下重新创建集合 由于我的模型有三个属性unique:true,因此我需要创建这些索引,以便不保存重复项。为什么不创建实例,如何自动创建它们 型号: var ObjectSchema = new Schema({ propertyone: { type: String, required: true, unique: true, tr
unique:true
,因此我需要创建这些索引,以便不保存重复项。为什么不创建实例,如何自动创建它们
型号:
var ObjectSchema = new Schema({
propertyone: {
type: String,
required: true,
unique: true,
trim: true
},
propertytwo: {
type: String,
required: true,
unique: true,
trim: true
},
propertythree: {
type: String,
required: true,
unique: true,
trim: true
}
});
方法-用于删除集合
exports.dropCollection = function(collectionName, callback) {
console.log("Dropping Collection: " + collectionName);
// Drop in collection name string
var collection = mongoose.connection.collections[collectionName]
collection.drop(function(err) {
if (err) {
console.log(err);
callback(err, null)
} else {
console.log("Collection Deleted")
callback();
}
});
}
原因很简单,您删除了集合,并且索引已附加到集合中。你的问题基本上与这篇现有文章相反:
你可能想要的是。在没有参数或空查询文档的情况下,它将删除集合中的所有文档。但是索引仍然保留。Mongoose会在启动时自动创建模式指定的索引。如果在运行时删除一个集合(该集合在运行时删除所有数据和所有索引),则需要重新启动应用程序,或者在
模型上重新创建它们(如有必要):
MyModel.ensureIndexes(function() {
// callback after indexes have been created
});
谢谢移除方法有效,我还需要像WiredPairie建议的那样在上面设置EnsureIndex。