我有2个收藏,
var Sub= new Schema({
content: String,
date: Date
});
var Main= new Schema({
subs: [Sub]
});
我正在以这种方式创建和删除:
exports.create = function(req, res) {
new Sub({
content: req.body.content
}).save(function(err, sub) {
Main.update({_id: req.body.mid}, {$push: {subs: sub}}, {upsert: true}, function(err, mmain) {
res.redirect('/' + req.body.mid);
});
});
};
exports.destroy = function(req, res) {
Sub.findOne({_id: req.params.sid}, function(err, sub) {
Main.update({_id: req.params.mid}, {$pull: {subs: sub}}, function(err, mmain) {
sub.remove(function(err, sub) {
res.redirect('/' + req.params.mid);
});
});
});
};
所以基本上我首先创建一个子对象,然后我使用 .update 将该子对象 $push 到主集合中。但是,当我从列表中删除一个子对象时,我还必须删除原始子对象。还有另一种方法吗?所以我只需要更改一个子对象,而不必更改现在位于主对象内的子对象和原始子对象。