0

「Binders」というコレクションがあります。このコレクションには、「Docs」スキーマを参照する「docs」というフィールドがあります。

findOne() を使用して ID で「バインダー」をプルしたいのですが、これは問題ありません。

しかし、フィールド比較によって返される「ドキュメント」を制限したい

私はマングースにやや慣れていませんが、疑似クエリがあれば...

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 のドキュメントがあり、タイプ 1 のドキュメントがなかった場合でも、バインダー情報は取得できますが、Docs フィールドにはドキュメントがありません。

それが理にかなっていることを願っています。

4

1 に答える 1

1

私があなたを正しくフォローしてdocsいて配列である場合、$elemMatch射影演算子を使用してこれを行うことができます:

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