我正在尝试将一个对象推送到Mongoose中另一个Array中的数组中。基本上就像评论评论。下面是我的schema的结构:
const Schema = new mongoose.Schema ({
name: {type: String, required: true},
description: {type: String, required: true},
topics: [{name: String, description: String, responses: [{name: String, description: String}]
});
这就是我到目前为止所尝试的:
Model.findOneAndUpdate({$and: [{_id: req.body.classId}, {topics: {$elemMatch: {_id: req.body.id}}}]},
{$push: {responses: {name: req.body.name, description: req.body.description}}},
function(err, result){
res.send(result);
});
这不会产生任何错误,并且result
不是空的。我也试着在没有$and
的情况下这样做:{_id: req.body.classId, 'topics._id': req.body.id'}
也不行。你还能再深入一层吗?
1条答案
按热度按时间dwthyt8l1#
您应该使用位置$运算符来:
标识数组中要更新的元素,而不显式指定该元素在数组中的位置。
例如:
我们将一个新的
{ name: 'response b' }
对象推送到topic a
的responses
数组中。执行日志: