我确定这是在某个地方,我已经阅读了MongoDB文档和一些mongoose块,但我只是想弄清楚如何限制填充的结果,所以它不会尝试获得整个用户,只是子阵列。
我有2个模式,指示2个集合,'问题'和'用户',当我添加一个问题时,使用它的用户被分配了它,现在我想要检索他们所有的问题,但是当我这样做的时候也是返回我不想要的整个所有者对象,因为它浪费了计算,并且在他们提出请求时我已经知道用户。
结果如下: 我只是想得到'问题'数组,但不仅仅是在可能的情况下过滤掉结果,而是停止要求整个用户开始,这是我的mongoose查询:
if (req.body.action == 'q_get') {
var idtoken = req.body.idtoken;
settings.userPayload(idtoken).then((result) => {
if (result) {
USER.findOne({'unique_id': result['sub']})
.populate('questions')
.exec(function (err, questionsResult) {
if (err) return console.log(err);
res.json(questionsResult);
});
} else {
res.json({result: 'failed to validate session'});
}
});
}
答案 0 :(得分:0)
如果您有2个单独的集合,则可以以相同的方式查询它们。而不是User.find()使用Question.find()并使用用户ID或任何链接它们的过滤器进行过滤。但是,您看起来像问题的输出是用户的子文档,因此您必须使用父子相关查询或过滤查询,除了子文档之外的所有内容。
父子文档查询的示例:User.Question [0];。我不确定如何有效地获取多个子文档。但这应该让你开始。
通过id进行父子查询的示例:User.Question.id(_id);其中_id可以是网址或正文中的参数。