38

値が単純な配列に含まれていることを確認する方法を見つけました:

var filter = Builders<Post>.Filter.AnyEq(x => x.Tags, "mongodb");

しかし、具体的なフィールドによって多くのフィールドを持つ複雑なアイテムを見つけるにはどうすればよいでしょうか? ビルダーでドット表記アプローチを使用して記述する方法を見つけましたがBsonDocument、型付きラムダ表記でどのように行うことができますか?

更新

私はそれがある種だと思います

builderInst.AnyIn(p => p.ComplexCollection.Select(ml => ml.Id), mlIds)

今は確認できないのですが、誰か助けてくれませんか?

4

4 に答える 4

8

$elemMatchオペレーターが必要です。Builders<T>.Filter.ElemMatchまたは式を使用できますAny

Find(x => x.Tags.Any(t => t.Name == "test")).ToListAsync()

http://mongodb.github.io/mongo-csharp-driver/2.0/reference/driver/expressions/#elemmatch

于 2015-12-10T13:14:10.173 に答える