我有一个数据库,该数据库最初是按以下方式设置的;
const productSchema = new mongoose.Schema({
supplier: {
type: String,
required: 'Supplier is required',
ref: 'Supplier'
},
name: {
type: String,
required: 'Name is required'
},
price: {
type: Number,
required: 'Price is required'
}
})
但是现在我想像这样将字段name
重命名为product
;
const productSchema = new mongoose.Schema({
supplier: {
type: String,
required: 'Supplier is required',
ref: 'Supplier'
},
product: {
type: String,
required: 'Product is required'
},
price: {
type: Number,
required: 'Price is required'
}
})
我从客户那里得到的结果没有更新为显示product
而不是name
;
结果:
[
{
"_id": "5df7baa7acf4ed3897d8d4c9",
"supplier": "Old Co Ltd",
"name": "Small Woggle",
"price": 6
}
]
最后是我的数据库,其中以猫鼬填充字段;
mongoose.connect(dbURI, (err, db) => {
db.dropDatabase()
.then(() => Product.create([{
supplier: 'Old Co Ltd',
product: 'Small Woggle',
price: 6
}]))
.then(products => console.log(`${products.length} products created`))
.catch(err => console.log(err))
.finally(() => mongoose.connection.close())
})
请帮助我重命名此字段
答案 0 :(得分:0)
您不能只重命名架构中的字段。您需要实际运行更新。
示例:
productSchema.update({}, { $rename: { name: 'product' } }, { multi: true }, (err) => {
if(err) { throw err; }
console.log('complete');
});
https://docs.mongodb.com/manual/reference/operator/update/rename/
答案 1 :(得分:-1)
上面的答案有效,但是我也找到了一个替代方法,而没有在您的代码中添加任何内容。
只需使用以下步骤即可;
1.在终端运行mongod
2.导航到db并删除数据库db.dropDatabase()
3.然后通过在文件上运行node
来初始化数据库。