まだ見つからないので、Mongoを使用したワイルドカード検索/全文検索のヘルプがたくさんあるので、要件の回避策を考え出しました。
foreach (var doc in batch)
{
if (custDictionary.ContainsKey(projectId))
{
string concatenatedCustomFields = custFieldsList.Aggregate(string.Empty,
(current, custField) =>
current +
(ds.Tables[0].Columns.Contains(custField)
? (ds.Tables[0].Rows[i][custField].GetType().Name == typeof(DBNull).Name
? string.Empty
: ((string) ds.Tables[0].Rows[i][custField]).StripHtml())
: string.Empty));
doc.Add("CustomFieldsConcatenated", concatenatedCustomFields);
}
i++;
}
ドキュメントの各グループのカスタムフィールドのリストを読み、連結されたMongoフィールドを作成し、そのフィールドで正規表現クエリを使用します。
次に、インデックスに続いて追加されたクエリのパフォーマンスを向上させるために
_mongoConnect.Database?.GetCollection<BsonDocument>("MyCollectionName")
.Indexes.CreateOneAsync(new BsonDocument("CustomFieldsConcatenated", "hashed"), new CreateIndexOptions { Name = "CollectionName_FieldName_Index" });