我有两个JSON对象,每个对象中都有一个名字字段。我想使用猫鼬将名字重命名为name,也想将现有的firstname值导入为name。
架构:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const user = new Schema({
firstname:{ type:String },
lastname:{ type:String },
username:{ type:String },
password:{ type:String },
user_type:{ type:String },
})
module.exports = mongoose.model('user', user)
数据示例:
_id: "5bf5fbef16a06667027eecc2", firstname: "Hareesh", lastname: "Pitchikala", username: "123", password: "123", user_type: "employer", __v: 0
答案 0 :(得分:0)
首先,您需要向架构中添加name
,使其变为:
const user = new Schema({
name:{ type:String },
firstname:{ type:String }, //keep this for now
lastname:{ type:String },
username:{ type:String },
password:{ type:String },
user_type:{ type:String },
});
现在,在您的应用代码中的某个地方,您需要运行以下代码:
User.update({}, { $rename: { firstname: 'name' } }, { multi: true }, function(err, blocks) {
if(err) { throw err; }
console.log('done!');
});
现在,您可以根据需要从架构中删除firstname
。
答案 1 :(得分:-1)
文档可以如下更新:
db.collection.updateMany({},{ $rename: { "firstname": "name" } } );