Mongoose并限制了字段模式的结果

时间:2013-01-25 18:04:40

标签: mongodb mongoose

我有一个名为“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,我仍然会得到我的活页夹信息,但是文档字段中没有文档。

希望这是有道理的。

1 个答案:

答案 0 :(得分:1)

如果我正确地关注你并且docs是一个数组,那么你可以使用$elemMatch投影算子来执行此操作:

Binder.findOne({_id: req.binder._id}, {docs: {$elemMatch: {type: 'type1'}}}, ...