我有一个名为“Binders”的系列 在这个集合中,我有一个名为“docs”的字段,它引用了“Docs”模式
我想通过id用findOne()拉出一个“Binder”,这没问题。
但我想通过字段比较来限制返回的“文档”
我对猫鼬有点新鲜,但如果我有伪查询......
Binder.findOne({_id: req.binder._id}, {$where {docs.type = 'type1'}}, function(error, binder) {
// So this would return my full binder but only the docs where their .type = 'type1'
});
我迷失的地方是基于Schema的限制
{$where {docs.type = 'type1'}}
因此,如果我拉了一个活页夹并且它有50个文档,但是没有一个文档属于type1,我仍然会得到我的活页夹信息,但是文档字段中没有文档。
希望这是有道理的。
答案 0 :(得分:1)
如果我正确地关注你并且docs
是一个数组,那么你可以使用$elemMatch
投影算子来执行此操作:
Binder.findOne({_id: req.binder._id}, {docs: {$elemMatch: {type: 'type1'}}}, ...