问题:我正在尝试使用findOneAndUpdate更新MongoDb中的一些嵌套字段,但它仅更新一个字段(日期)而不是所有字段,实际上,如果我删除了“日期”字段,什么也不更新。
方案:
const UserSchema = new Schema({
info : {
geolocation: {
latitude: String,
longitude: String,
date: Date
}
}
})
我的声明:
User.findOneAndUpdate (
{"_id": id},
{"$set": {
'info.geolocation.latitude': 'test-lat',
'info.geolocation.longitude': 'test-long',
'info.geolocation.date': moment()
}
}).exec(function (err, doc) {
if (err) {
mongodb.desconectMDB();
return res.status(500).send({
message: 'error'
});
} else {
console.log(doc);
return res.status(200).send({
message: 'success'
});
}
}
);
(我已经在这里Mongoose findOneAndUpdate Updating Multiple Fields接受了答案,这与我的问题类似,但是在我的情况下不起作用)
答案 0 :(得分:0)
它未在您的bdd或console中更新。日志(doc)只是显示了错误的信息?
如果console.log(doc)返回错误信息,只需添加以下选项({new:true})以返回更新的文档:
User.findOneAndUpdate (
{"_id": id},
{"$set": {
'info.geolocation.latitude': 'test-lat',
'info.geolocation.longitude': 'test-long',
'info.geolocation.date': moment()
}
},
{new: true}).exec(....