公式のC#ドライバを使用してMongoDBコレクションを照会しようとしています。C#MongoDB LINQ:ネストされたリストを照会できません
musicfiles.AsQueryable().Where(f => f.Comments != null && f.Comments.Any(c => c.Text == "Comment1")).ToList();
I:
IMongoDatabase db = mongoClient.GetDatabase("appdb");
IMongoCollection<MusicFile> musicfiles = db.GetCollection<MusicFile>("files");
public class MusicFile
{
public ObjectId Id { get; set; }
public string Name { get; set; }
public IList<Comment> Comments { get; set; }
}
public class Comment
{
public string Text { get; set; }
}
これは私がプロパティText =「コメント1」とコメントオブジェクトを含む任意のMusicFileオブジェクトを取得しようとしているクエリは次のとおりです。ここで私が作成したオブジェクト構造ですこのクエリが機能しない場合は、常に空のリストを返します。
musicfiles.Find(f => f.Comments.Any(c => c.Text == "Comment1")).ToList()
しかし、私は完全なコレクションを取得する場合、クエリは動作しますが、メモリである:私は、あまりにも動作しませんでした、これを試してみました
musicfiles.Find(FilterDefinition<MusicFile>.Empty).ToList().Where(f => f.Comments != null && f.Comments.Any(c => c.Text == "Comment1")).ToList();
これは照会することは非常に非効率的な方法のように思えます。助言がありますか?
私は今、バスに乗っているので答えは出せませんが、クエリ可能なものは複雑なクエリを変換できないことがわかりました。フィルタービルダーとelemMatchの使用をお勧めします。 – john