Mongoose バージョン 3.6.4 の使用
次のような MongoDB ドキュメントがあるとします。
{
"_id" : "5187b74e66ee9af96c39d3d6",
"profile" : {
"name" : {
"first" : "Joe",
"last" : "Pesci",
"middle" : "Frank"
}
}
}
そして、ユーザーには次のスキーマがあります。
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}
);
そして、次の名前のフィールドを渡すフォームを送信します。profile[name][first]
値はJoseph
したがって、ユーザーの名前だけを更新したいのですが、姓とミドルはそのままにしておきます。
User.update({email: "joe@foo.com"}, req.body, function(err, result){});
しかし、それを行うと、プロパティとプロパティが「削除」profile.name.last
さprofile.name.middle
れ、次のようなドキュメントになります。
{
"_id" : "5187b74e66ee9af96c39d3d6",
"profile" : {
"name" : {
"first" : "Joseph"
}
}
}
したがって、基本的にはすべてをprofile
withreq.body.profile
で上書きしていますが、これは理にかなっていると思います。の代わりに更新クエリで自分のフィールドを指定することで、より明示的にする必要なく、それを回避する方法はありますreq.body
か?