Sử dụng Mongoose phiên bản 3.6.4Mongoose.js: Cập nhật nguyên tử của thuộc tính lồng nhau?
Nói rằng tôi có một tài liệu MongoDB như vậy:
{
"_id" : "5187b74e66ee9af96c39d3d6",
"profile" : {
"name" : {
"first" : "Joe",
"last" : "Pesci",
"middle" : "Frank"
}
}
}
Và tôi có giản đồ sau đây cho người dùng:
var UserSchema = new mongoose.Schema({
_id: { type: String },
email: { type: String, required: true, index: { unique: true }},
active: { type: Boolean, required: true, 'default': false },
profile: {
name: {
first: { type: String, required: true },
last: { type: String, required: true },
middle: { type: String }
}
}
created: { type: Date, required: true, 'default': Date.now},
updated: { type: Date, required: true, 'default': Date.now}
);
Và tôi gửi một hình thức qua một trường có tên: profile[name][first]
có giá trị là Joseph
và do đó tôi muốn cập nhật chỉ là fi của người dùng tên đầu tiên, nhưng để lại của ông cuối cùng và trung bình một mình, tôi nghĩ rằng tôi sẽ chỉ làm:
User.update({email: "[email protected]"}, req.body, function(err, result){});
Nhưng khi tôi làm điều đó, nó "xóa" các profile.name.last
và profile.name.middle
tính và tôi kết thúc với một doc trông giống như :
{
"_id" : "5187b74e66ee9af96c39d3d6",
"profile" : {
"name" : {
"first" : "Joseph"
}
}
}
Vì vậy, về cơ bản nó ghi đè lên tất cả các profile
với req.body.profile
, mà tôi đoán có ý nghĩa. Có cách nào xung quanh nó mà không cần phải rõ ràng hơn bằng cách chỉ định các trường của tôi trong truy vấn cập nhật thay vì req.body
?
Cân nhắc chấp nhận câu trả lời của Aichholzer vì nó cung cấp giải pháp thực sự cho vấn đề. – zbr