カテゴリにグループ化された基準を含むことができるドキュメントのコレクションがあります。構造は次のようになります。
{
"Name": "MyDoc",
"Criteria" : [
{
"Category" : "Areas",
"Values" : ["Front", "Left"]
},
{
"Category" : "Severity",
"Values" : ["High"]
}
]
}
条件の埋め込みドキュメントを作成するために使用しているクラスは次のようになります。
public class CriteriaEntity
{
public string Category { get; set; }
public IEnumerable<string> Values { get; set; }
}
ユーザーは検索する各カテゴリから基準を選択でき (これは として関数に入りますIEnumerable<CriteriaEntity>
)、ドキュメントが返されるためには、選択されたすべての基準が含まれている必要があります。これは私の最初の試みでした:
var filterBuilder = Builders<T>.Filter;
var filters = new List<FilterDefinition<T>>();
filters.Add(filterBuilder.Exists(entity =>
userCriterias.All(userCriteria =>
entity.Criteria.Any(entityCriteria =>
entityCriteria.Category == userCriteria.Category
&& userCriteria.Values.All(userValue =>
entityCriteria.Values.Any(entityValue =>
entityValue == userValue))))));
ただし、「エンティティのシリアル化情報を特定できません...」というエラーが表示されます。どうすればこれを機能させることができますか?