残念ながら、公式ドライバーは現在サポートしていないようです-ここExcept()
のリストにはありません
(maps to $in)のような非標準の拡張機能In
がたくさんあります。おそらく、これらのいずれかを回避策として使用できます。(私は見ることができませんでした$nin
が、おそらく!In
にマッピングされ$nin
ますか?)
Except
最後の手段として、コレクションの一部を具体化し、Linq を使用してメモリ内をオブジェクトに適用する必要がある場合があります。
編集これは、コレクション全体がメモリに取り込まれる最後の手段です。これは、多数のオブジェクトがある場合にはお勧めできません。
var querycodes= new string[] {"aaa", "bbb", "ccc"};
var query = collection.AsQueryable<Source>()
.ToList()
.Where(d => (d.codes.Count == querycodes.Count() &&
!d.codes.Except(querycodes).Any()));
または、Count()
が ( として$size
) 実装されているため、Mongo で最初のパス フィルターを実行してから、メモリで 2 番目のパスを実行することをお勧めします。
var querycodes= new string[] {"aaa", "bbb", "ccc"};
var query = collection.AsQueryable<Source>()
.Where(d => d.codes.Count == querycodes.Count())
.ToList()
.Where(d => !d.codes.Except(querycodes).Any()));