Korzystanie Mongoose wersję 3.6.4Mongoose.js: Atomowa aktualizacja właściwości zagnieżdżonych?
że mam dokument MongoDB tak:
{
"_id" : "5187b74e66ee9af96c39d3d6",
"profile" : {
"name" : {
"first" : "Joe",
"last" : "Pesci",
"middle" : "Frank"
}
}
}
I mam następujący schemat dla użytkowników:
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}
);
I złożyć formularz mijania pole o nazwie: profile[name][first]
o wartości: Joseph
i dlatego chcę zaktualizować tylko plik użytkownika RST nazwa, ale pozostawić jego ostatni i środkowy sam, myślałem, że po prostu zrobić:
User.update({email: "[email protected]"}, req.body, function(err, result){});
Ale kiedy to zrobić, to „usunięcie” tych profile.name.last
i profile.name.middle
właściwości i skończyć z dokumentu, który wygląda jak :
{
"_id" : "5187b74e66ee9af96c39d3d6",
"profile" : {
"name" : {
"first" : "Joseph"
}
}
}
Więc to w zasadzie nadpisywania wszystkich profile
z req.body.profile
, co chyba ma sens. Czy jest jakiś sposób obejścia tego bez konieczności wyraźniejszego określania pól w kwerendzie aktualizacji zamiast req.body
?
Rozważ zaakceptowanie odpowiedzi Aichholzera, ponieważ zapewnia ona prawdziwe rozwiązanie problemu. – zbr