重命名猫鼬字段

时间:2018-11-23 12:57:08

标签: node.js database mongodb rest

我有两个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

2 个答案:

答案 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" } } );
相关问题