我的父模型如下所示:
var OrderSchema = new mongoose.Schema({
serviceNotes: {type: mongoose.Schema.Types.ObjectId, ref: 'Service'},
vehicle: {type: mongoose.Schema.Types.ObjectId, ref: 'Vehicle'}
});
孩子们看起来像这样:
var VehicleSchema = new mongoose.Schema({
name: String
});
var ServiceSchema = new mongoose.Schema({
baseCost: Number
});
我正在尝试找到一个简单的解决方案,一次更新所有这些文档。问题是,当我调用订单更新时,它不会更新嵌套文档。请参阅以下内容:
exports.updateOrder = function (req, res) {
var order = req.body.order,
update = {
$set: order
};
Order.findOneAndUpdate({_id: order._id}, update, {new: true}, function (err, order) {
if (err) handleError(res);
if (!order) return res.status(404).send('Order not found.');
return res.json({order: order});
});
}
在这种情况下,req.body
的示例可能如下所示:
{
order: {
_id: 829198218932shdbn,
serviceNotes: {
_id: 8932838nsd2sdnbd,
baseCost: 1
},
vehicle: {
_id: iu283823872378bd,
name: 'Honda'
}
}
}
订单更新还应使用更新的信息更新serviceNotes,并使用更新的信息更新车辆。
我能够更新嵌套文档的唯一方法是在子项上调用findOneAndUpdate
并逐个更新它们。我正在寻找一个解决方案,只需在父(订单)上调用更新,并让孩子也更新。