Mongoose findByIdAndUpdate删除未更新的属性
我有以下的mongoose模型:
var mongoose = require('mongoose'); var userSchema = mongoose.Schema({ facebook: { name: String, email: String, customerId: String } }); var User = mongoose.model('User', userSchema);
当我使用findByIdAndUpdate
更新这个文档的一部分
User.findByIdAndUpdate(id, { $set: { facebook: { name: name } } });
name
被更新,而email
和customerId
被删除(未设置?)。
我没有find这个logging。
有没有办法用findByIdAndUpdate
只更新特定的文档属性?
FindByIdAndUpdate实际上是通过文档ID发出一个mongodb findAndModify更新命令。
重点是你正在设置一个对象来覆盖旧的对象。 如果你想更新一个字段,你需要修改你的更新对象。
User.findByIdAndUpdate(id, { $set: { 'facebook.name':name } });
这只会更新名称字段,保持rest对象在前一个。