我一直在尝试在导入数据时重置唯一键索引,如下所示:
const importData = function() {
UserLocation.collection.dropAllIndexes((err) => {
if (err) {
console.trace(err);
return;
}
UserLocation.collection.createIndex({
Adfrom: 1,
Adpto: 1
}, {
unique: true
});
fs.createReadStream(`${__dirname}/../data/import-data.csv`).pipe(parser);
});
};
它在我的本地环境中工作正常但是当我部署此代码时因为dropIndex而导致mongodb连接错误。
Error:
Mongoose default connection to mongodb://localhost:27017/userlocation disconnected
Mongoose default connection error: MongoError: connect ECONNREFUSED 127.0.0.1:27017
如何解决此问题。
请帮忙!
由于
答案 0 :(得分:1)
您可以按
删除索引db.collection.dropIndex("//field of which you want to drop index")
或者您可以使用索引规范文档
db.collection.dropIndex( { "//field of which you want to drop index" : -1 } )
它将删除值为-1的字段的索引。
和集合将是您的表的名称,
例如。
db.pets.dropIndex( { "cat" : -1 } )
为了创建索引,您可以快速浏览一下Create Index。
您可以在mongo shell中运行这些命令。
答案 1 :(得分:0)
const schema = new Schema({ name: { type: String, unique: true } });
const Customer = mongoose.model('Customer', schema);
await Customer.collection.createIndex({ age: 1 }); // Index is not in schema
// Will drop the 'age' index and create an index on `name`
await Customer.syncIndexes();
您需要同步索引。查看此来源:https://mongoosejs.com/docs/api.html#model_Model.syncIndexes