我有一个像这样的猫鼬查询:
var query = Events.findOneAndUpdate({ '_id': event._id,'participants._id':participant._id},{'$set': {'participants.$': participant}}, {upsert:false,new: true},function(err,result){
if(err){
return res.status(500).jsonp({
error: 'Unable to update participant'
});
}
console.log(result.participants[0]);
res.jsonp(result.participants[0]);
});
并且查询可以正常修改Events集合中的参与者子文档。
问题:
我只需要将修改后的参与者作为JSON返回,并且我不需要整个参与者数组,但我无法实现这一点,因为我在console.log(result.participants);
如何在查询后只获取修改后的子文档?
答案 0 :(得分:0)
您可能必须使用原生JS filter()
方法,如下所示:
Events.findOneAndUpdate(
{ '_id': event._id, 'participants._id': participant._id },
{ '$set': { 'participants.$': participant } },
{ upsert: false, new: true },
function(err, result){
if(err){
return res.status(500).jsonp({
error: 'Unable to update participant'
});
}
var modified = result.participants.filter(function(p){
return p._id === participant._id
})[0];
console.log(modified);
res.jsonp(modified);
}
);