Mongoose を使用して、(サブ) ドキュメントに複数のプロパティを一度に設定することは可能ですか? 私がやろうとしていることの例:
私がこのスキーマを持っているとしましょう:
var subSchema = new Schema({
someField: String,
someOtherField: String
});
var parentSchema = new Schema({
fieldOne: String,
subDocs: [subSchema]
})
それから私はやりたい:
exports.updateMyDocument = function(req, res) {
var parentDoc = req.parentDoc; // The parent document. Set by parameter resolver.
var document = req.myDoc; // Sub document of parent. Set by parameter resolver.
var partialUpdate = req.body; // updated fields sent as json and parsed by body parser
// I know that the statement below doesn't work, it's just an example of what I would like to do.
// Updating only the fields supplied in "partialUpdate" on the document
document.update(partialUpdate);
parentDoc.save(function(err) {
if(err) {
res.send(500);
return;
}
res.send(204);
});
};
通常、$set
演算子を使用してこれを実現できますが、問題はdocument
、この例ではparentDoc
. だから私がやろうとしたとき
Parent.update({_id: parentDoc._id, "subDocs._id": document._id},
{$set: {"subDocs.$" : partialUpdate}},
function(err, numAffected) {});
によって識別されるサブドキュメント インスタンスを置き換えましたsubDocs._id
。現在、フィールドのみを手動で設定することで「解決」していますが、これを行うためのより良い方法を望んでいました。