0

我有一个名为“Binders”的集合在这个集合中我有一个名为“docs”的字段,它引用了一个“Docs”模式

我想用 findOne() 按 id 拉一个“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'

});

我迷路的地方是基于模式的限制

{$where {docs.type = 'type1'}}

因此,如果我拉出一个活页夹,它有 50 个文档,但没有一个文档属于 type1,我仍然会得到我的活页夹信息,但是 Docs 字段中不会有任何文档。

希望这是有道理的。

4

1 回答 1

1

如果我正确地跟随你并且docs是一个数组,那么你可以使用$elemMatch投影运算符来做到这一点:

Binder.findOne({_id: req.binder._id}, {docs: {$elemMatch: {type: 'type1'}}}, ...
于 2013-01-25T18:11:27.757 回答