【发布时间】:2017-04-30 14:45:47
【问题描述】:
我在 mongodb 中有一个对象。我想使用状态过滤他们的部分。如果状态为active,则只需将其发送给用户。
课程架构的结构是:
{
_id: 'ObjectId',
name: 'NODE JS',
.
.
sections: [
{status: 'active', trainer: 'XYZ'}, {status: 'inactive', trainer: 'YZX'}, .....
]
}
'sections.status': 'active' 下方可以正常过滤课程,但它会返回所有不活动的部分。如何在猫鼬查询本身中过滤数组。不处理查询结果。
Course.findOne({ _id: req.params.id , 'sections.status': 'active' })
.exec((err, course) => {
if (err) {
logger.error(err);
res.status(500).json({ success: false, message: 'Error in getting data' });
} else if (!course) {
res.status(404).json({ success: false, message: 'No course details found' });
} else {
res.json({ success: true, course });
}
});
【问题讨论】:
-
您希望响应包含架构中的所有数据,唯一的区别是删除不活动的
sections? -
@Mike 是的。你说的是真的。
-
我不相信您可以使用 Mongoose 从文档中删除数据而不写入数据库本身。我想你说你不想在你的回答中这样做,但你可能做的最好的事情是手动从
sections中删除不活动的项目,并在响应中发送修改后的对象。请参阅此处以获取参考:stackoverflow.com/questions/14504385/…