Overview
このガイドでは、 Searchビルダーを使用して MongoDB .NET/C# ドライバーで$search集計パイプライン ステージを構築する方法を学びます。
$searchパイプライン ステージの詳細については、 $search を参照してください。
注意
MongoDB v4.2 以降の Atlas でのみ利用可能
$search集計パイプライン演算子は、MongoDB 4.2Search インデックスによってカバーされている MongoDB v 以降を実行する MongoDB Atlas クラスターでホストされているコレクションでのみ使用できます。必要な設定とこの演算子の機能の詳細については、MongoDB 検索するのドキュメントを参照してください。
このガイドの例では、 guitarsというコレクション内の次のドキュメントを使用します。
{ "_id": 1, "make": "Fender", "description": "Classic guitars known for their versatility.", "establishedYear": 1946, "in_stock": true, "rating": 9 } { "_id": 2, "make": "Gibson", "description": "Classic guitars known for their rich, full tones.", "establishedYear": 1902, "in_stock": true, "rating": 8 } { "_id": 3, "make": "PRS", "description": "High-end guitars known for their quality.", "establishedYear": 1985, "in_stock": true, "rating": 9 } { "_id": 4, "make": "Kiesel", "description": "Quality guitars made only for custom orders.", "establishedYear": 2015, "in_stock": false } { "_id": 5, "make": "Ibanez", "description": "Well-crafted guitars used by many professional guitarists.", "establishedYear": 1957, "in_stock": true, "rating": 7 } { "_id": 6, "make": "Strandberg", "description": "Modern guitars known for their headless models.", "establishedYear": 1982, "in_stock": false }
次のGuitarクラスは、このコレクション内のドキュメントをモデル化します。
public class Guitar { public int Id { get; set; } public string Make { get; set; } public List<string> Models { get; set; } public int EstablishedYear { get; set; } [] public bool InStock { get; set; } public int? Rating { get; set; } }
注意
guitars コレクションのドキュメントは、キャメル ケースの命名規則を使用します。このガイドの例では、ConventionPack を使用してコレクション内のフィールドをパスカル ケースに逆シリアル化し、Guitar クラスのプロパティにマップします。
カスタム直列化について詳しくは、「 カスタム直列化 」を参照してください。
MongoDB Search インデックスの作成
Atlasコレクションで検索する前に、まずコレクションにAtlas Searchインデックスを作成する必要があります。MongoDB 検索インデックスは、検索可能な形式でデータを分類するデータ構造です。
MongoDB 検索インデックスの作成方法については、MongoDB 検索インデックスの作成 Atlas ガイドを参照してください。
MongoDB 検索する演算子
Searchクラスには、 $search操作を実行するために使用できるメソッドが含まれています。 使用可能な$search演算子の完全なリストについては、Atlas の演算子とコレクターのガイドを参照してください。
オートコンプリート
Autocomplete()メソッドを使用して、不完全な入力 string からの文字シーケンスを含む単語またはフレーズを検索します。
次の例では、make フィールドで "Gib" で始まる文字列に対してオートコンプリート クエリを実行します。
var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.Autocomplete(g => g.Make, "Gib"), indexName: "guitarmakes") .ToList();
注意
オートコンプリート クエリ用インデックス
オートコンプリート クエリを正常に実行するには、オートコンプリートをサポートするMongoDB 検索インデックスを作成する必要があります。詳細を学ぶには、Atlas ドキュメントのオートコンプリート用にフィールドをインデックスする方法を参照してください。
MongoDB検索インデックスの作成後、前述のコードに示すように、インデックス名を Autocomplete() メソッドに渡す必要があります。
検索では、次のドキュメントが返されます。
{ "_id" : 2, "make" : "Gibson", "description" : "Classic guitars known for their rich, full tones.", "establishedYear" : 1902, "in_stock" : true, "rating" : 8 }
autocomplete演算子の詳細については、Atlas のオートコンプリートガイドを参照してください。
複合
2 つ以上の演算子を 1 つの検索に結合するには、 Compound()メソッドを使用します。
次の例では、 guitarsコレクションで次のすべての条件に一致するドキュメントを検索します。
ratingフィールドはドキュメントに存在するin_stockフィールドはfalseではありませんestablishedYearフィールドの値が 1940 より大きい
var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.Compound() .Must(Builders<Guitar>.Search.Exists(g => g.Rating)) .MustNot(Builders<Guitar>.Search.Equals(g => g.InStock, false)) .Must(Builders<Guitar>.Search.Range(g => g.EstablishedYear, SearchRangeBuilder.Gt(1940)))) .ToList();
検索では、次のドキュメントが返されます。
{ "_id" : 1, "make" : "Fender", "description" : "...", "establishedYear" : 1946, "in_stock" : true, "rating" : 9 } { "_id" : 3, "make" : "PRS", "description" : "...", "establishedYear" : 1985, "in_stock" : true, "rating" : 9 } { "_id" : 5, "make" : "Ibanez", "description" : "...", "establishedYear" : 1957, "in_stock" : true, "rating" : 7 }
compound演算子の詳細については、 Atlas複合ガイド をご覧ください。
embeddedDocument
EmbeddedDocument()メソッドを使用して、フィールドの配列値内のドキュメントに対して検索操作を実行します。
注意
埋め込みドキュメントを検索するには、配列フィールドにembeddedDocumentインデックスを作成する必要があります。
embeddedDocumentインデックスを定義する方法については、Atlas ドキュメントの「 embeddedDocument 型のインデックスの定義」を参照してください。
guitarsコレクション内の一部のドキュメントには、製品詳細オブジェクトの配列を保持するproductDetailsフィールドが追加されているとします。
{ "_id": 1, "make": "Fender", "description": "...", "establishedYear": 1946, "in_stock": true, "rating": 9, "productDetails": [{"product_id": 1234, "serial": "YZ5678"}] } { "_id": 2, "make": "Gibson", "description": "...", "establishedYear": 1902, "in_stock": true, "rating": 8 } { "_id": 3, "make": "PRS", "description": "...", "establishedYear": 1985, "in_stock": true, "rating": 9, "productDetails": [{"product_id": 9870, "serial": "AB5555"}] } { "_id": 4, "make": "Kiesel", "description": "...", "establishedYear": 2015, "in_stock": false } { "_id": 5, "make": "Ibanez", "description": "...", "establishedYear": 1957, "in_stock": true, "rating": 7, "productDetails": [{"product_id": 5432, "serial": "ZZ1234"}] } { "_id": 6, "make": "Strandberg", "description": "...", "establishedYear": 1982, "in_stock": false }
productDetailsフィールドにembeddedDocumentインデックスを作成すると、そのフィールドのドキュメントに対してMongoDBの検索操作を実行できます。次の例では、productDetails 配列フィールドでテキストを検索し、serialフィールド値が "YZ5678" であるドキュメントを返します。
var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.EmbeddedDocument( g => g.ProductDetails, Builders<ProductDetails>.Search.Text(p => p.Serial, "YZ5678") )).ToList(); return result;
検索では、次のドキュメントが返されます。
{ "_id" : 1, "make" : "Fender", "description" : "Classic guitars known for their versatility.", "establishedYear" : 1946, "in_stock" : true, "rating" : 9, "productDetails" : [{ "product_id" : 1234, "serial" : "YZ5678" }] }
embeddedDocument演算子の詳細については、 embeddedDocument Atlas のガイドを参照してください。
equals
フィールドが指定された値と一致するかどうかを確認するには、 Equals()メソッドを使用します。
次の例では、 guitarsコレクションで、 in_stockフィールドの値がtrueであるドキュメントを検索します。
var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.Equals(g => g.InStock, true)) .ToList();
検索では、次のドキュメントが返されます。
{ "_id" : 1, "make" : "Fender", "description" : "...", "establishedYear" : 1946, "in_stock" : true, "rating" : 9 } { "_id" : 2, "make" : "Gibson", "description" : "...", "establishedYear" : 1902, "in_stock" : true, "rating" : 8 } { "_id" : 3, "make" : "PRS", "description" : "...", "establishedYear" : 1985, "in_stock" : true, "rating" : 9 } { "_id" : 5, "make" : "Ibanez", "description" : "...", "establishedYear" : 1957, "in_stock" : true, "rating" : 7 }
equals演算子の詳細については、 Atlas ガイドと等価を参照してください。
exists
指定されたインデックス付きフィールド名が存在するドキュメントを検索するには、 Exists()メソッドを使用します。 指定されたフィールドが存在してもインデックスがない場合、ドキュメントは結果セットに含まれません。
次の例では、 guitarsコレクションでratingフィールドが存在するドキュメントを検索します。
var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.Exists(g => g.Rating)) .ToList();
検索では、次のドキュメントが返されます。
{ "_id" : 1, "make" : "Fender", "description" : "...", "establishedYear" : 1946, "in_stock" : true, "rating" : 9 } { "_id" : 2, "make" : "Gibson", "description" : "...", "establishedYear" : 1902, "in_stock" : true, "rating" : 8 } { "_id" : 3, "make" : "PRS", "description" : "...", "establishedYear" : 1985, "in_stock" : true, "rating" : 9 } { "_id" : 5, "make" : "Ibanez", "description" : "...", "establishedYear" : 1957, "in_stock" : true, "rating" : 7 }
exists演算子の詳細については、既存のAtlasガイドを参照してください。
geoShape
GeoShape()メソッドを使用して、特定のジオメトリに関連するドキュメントを検索します。 検索する座標を指定する場合は、最初に 経度 、次に 緯度 を指定する必要があります。 経度の値は、両端を含む-180から180までです。 緯度の値は、両端を含む-90から90までです。
注意
MongoDB Search は以下の機能をサポートしていません。
非デフォルトの座標参照システム(CRS)
平面 XY 座標系 (2 次元)
座標ペアのポイント表記(pointFieldName: [12, 34])
guitarsコレクション内の一部のドキュメントにはin_stock_locationフィールドが追加されています。 コレクション内の変更されたドキュメントは、次のようになります。
{ "_id": 1, "make": "Fender", "description": "...", "establishedYear": 1946, "in_stock": true, "in_stock_location": { "type": "Point", "coordinates": [ -73.93615, 40.69791 ]}, "rating": 9 } { "_id": 2, "make": "Gibson", "description": "...", "establishedYear": 1902, "in_stock": true, "in_stock_location": { "type": "Point", "coordinates": [ 47.6062, 122.321 ]}, "rating": 8 }
次の例では、 in_stock_locationフィールドの座標が指定された多角形と交差しているすべてのドキュメントを検索します。
GeoJsonPolygon<GeoJson2DGeographicCoordinates> searchArea = new(new(new(new GeoJson2DGeographicCoordinates[] { new(-72.93615, 41.69791), new(-72.93615, 40.59791), new(-74.93615, 40.59791), new(-74.93615, 41.69791), new(-72.93615, 41.69791), }))); var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.GeoShape(g => g.InStockLocation, GeoShapeRelation.Intersects, searchArea)) .ToList();
検索では、次のドキュメントが返されます。
{ "_id" : 1, "make" : "Fender", "description" : "...", "establishedYear" : 1946, "in_stock" : true, "in_stock_location" : { "type" : "Point", "coordinates" : ["-73.93615", "40.69791"] }, "rating" : 9 }
geoShape演算子の詳細については、 geoShape Atlas ガイドを参照してください。
geoWithin
GeoWithin()メソッドを使用して、指定されたGeoJSONフィールドの座標が特定のジオメトリ内にあるドキュメントを検索します。 内にあるポイントを検索できます。
円
境界ボックス
多角形
検索する座標を指定する場合は、最初に 経度 、次に 緯度 を指定する必要があります。 経度の値は、両端を含む-180から180までです。 緯度の値は、両端を含む-90から90までです。
注意
MongoDB Search は以下の機能をサポートしていません。
非デフォルトの座標参照システム(CRS)
平面 XY 座標系 (2 次元)
座標ペアのポイント表記(pointFieldName: [12, 34])
guitarsコレクション内の一部のドキュメントにはin_stock_locationフィールドが追加されています。 コレクション内の変更されたドキュメントは、次のようになります。
{ "_id": 1, "make": "Fender", "description": "...", "establishedYear": 1946, "in_stock": true, "in_stock_location": { "type": "Point", "coordinates": [ -73.93615, 40.69791 ]}, "rating": 9 } { "_id": 2, "make": "Gibson", "description": "...", "establishedYear": 1902, "in_stock": true, "in_stock_location": { "type": "Point", "coordinates": [ 47.6062, 122.321 ]}, "rating": 8 }
次の例では、 in_stock_locationフィールドの座標が指定された多角形内にあるすべてのドキュメントを検索します。
GeoJsonPolygon<GeoJson2DGeographicCoordinates> searchArea = new(new(new(new GeoJson2DGeographicCoordinates[] { new(-74.3994140625, 40.5305017757), new(-74.7290039063, 40.5805846641), new(-74.7729492188, 40.9467136651), new(-74.0698242188, 41.1290213475), new(-73.65234375, 40.9964840144), new(-72.6416015625, 40.9467136651), new(-72.3559570313, 40.7971774152), new(-74.3994140625, 40.5305017757), }))); var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.GeoWithin(g => g.InStockLocation, searchArea)) .ToList();
検索では、次のドキュメントが返されます。
{ "_id" : 1, "make" : "Fender", "description" : "Classic guitars known for their versatility.", "establishedYear" : 1946, "in_stock" : true, "in_stock_location" : { "type" : "Point", "coordinates" : ["-73.93615", "40.69791"] }, "rating" : 9 }
geoWithin演算子の詳細については、 geoWithin Atlas ガイド を参照してください。
で
指定値のリストと一致するフィールド値を持つドキュメントを検索するには、In() メソッドを使用します。
次の例では、 guitarsコレクションで、makeフィールドの値が "Fender" または "Gibson" のいずれかであるドキュメントを検索します。
var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.In(g => g.Make, ["Fender", "Gibson"])) .ToList();
検索では、次のドキュメントが返されます。
{ "_id": 1, "make": "Fender", "description": "...", "establishedYear": 1946, "in_stock": true, "rating": 9 } { "_id": 2, "make": "Gibson", "description": "...", "establishedYear": 1902, "in_stock": true, "rating": 8 }
moreLikeThis
入力ドキュメントに類似するドキュメントを検索するには、 MoreLikeThis()メソッドを使用します。
次の例では、 guitarsコレクションで、 Descriptionフィールドの値が「高品質」であるオブジェクトに類似しているドキュメントを検索します。
var searchDocument = new GuitarSearch() { Description = "high quality", }; var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.MoreLikeThis(searchDocument)) .ToList();
検索では、次のドキュメントが返されます。
{ "_id" : 3, "make" : "PRS", "description" : "High-end guitars known for their quality.", "establishedYear" : 1985, "in_stock" : true, "rating" : 9 } { "_id" : 4, "make" : "Kiesel", "description" : "Quality guitars made only for custom orders.", "establishedYear" : 2015, "in_stock" : false, "rating" : null }
moreLikeThis演算子の詳細については、Atlas ガイドのmoreLikeThis Atlas ガイドを参照してください。
near
Near()メソッドを使用して、指定したフィールドが指定の値に近いドキュメントを検索します。 検索は、次に対して実行できます。
数値フィールド
日付フィールド
地理的ポイント
次の例では、 guitarsコレクションで、 ratingフィールドの値が9に近いドキュメントを検索します。 値が数値9にどのように近いかに基づいて、ドキュメントは順番に返されます。
var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.Near(g => g.Rating, 9, 1)) .ToList();
検索では、次のドキュメントが返されます。
{ "_id" : 1, "make" : "Fender", "description" : "...", "establishedYear" : 1946, "in_stock" : true, "rating" : 9 } { "_id" : 3, "make" : "PRS", "description" : "...", "establishedYear" : 1985, "in_stock" : true, "rating" : 9 } { "_id" : 2, "make" : "Gibson", "description" : "...", "establishedYear" : 1902, "in_stock" : true, "rating" : 8 } { "_id" : 5, "make" : "Ibanez", "description" : "...", "establishedYear" : 1957, "in_stock" : true, "rating" : 7 }
near演算子の詳細については、近くのAtlas ガイドを参照してください。
phrase
指定したフィールドに入力stringが含まれているドキュメントを検索するには、Phrase() メソッドを使用します。
次の例では、 guitarsコレクションで、 descriptionフィールドに「ClassicReads」というフレーズが含まれているドキュメントを検索します。
var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.Phrase(g => g.Description, "classic guitars")) .ToList();
検索では、次のドキュメントが返されます。
{ "_id" : 1, "make" : "Fender", "description" : "Classic guitars known for their versatility.", "establishedYear" : 1946, "in_stock" : true, "rating" : 9 } { "_id" : 2, "make" : "Gibson", "description" : "Classic guitars known for their rich, full tones.", "establishedYear" : 1902, "in_stock" : true, "rating" : 8 }
次のように、 コレクションで複数の個別のフレーズに一致するドキュメントを検索することもできます。
var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.Phrase(g => g.Description, new List<string>() { "classic guitars", "quality guitars" })) .ToList();
この検索では、次のドキュメントが返されます。
{ "_id" : 1, "make" : "Fender", "description" : "Classic guitars known for their versatility.", "establishedYear" : 1946, "in_stock" : true, "rating" : 9 } { "_id" : 4, "make" : "Kiesel", "description" : "Quality guitars made only for custom orders.", "establishedYear" : 2015, "in_stock" : false, "rating" : null } { "_id" : 2, "make" : "Gibson", "description" : "Classic guitars known for their rich, full tones.", "establishedYear" : 1902, "in_stock" : true, "rating" : 8 }
phrase演算子について詳しくは、Atlas ガイドのフレーズを参照してください。
queryString
QueryString()メソッドを使用して、次の演算子と区切り文字を含む string を使用してドキュメントを検索します。
ANDORNOT()
次の例では、 guitarsコレクションで、 descriptionフィールドの値が次の各条件に一致するドキュメントを検索します。
string "Classic"またはstring "quality" が含まれます
"custom" という string を含まない
var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.QueryString(g => g.Description, "(classic OR quality) AND NOT custom")) .ToList();
検索では、次のドキュメントが返されます。
{ "_id" : 1, "make" : "Fender", "description" : "Classic guitars known for their versatility.", "establishedYear" : 1946, "in_stock" : true, "rating" : 9 } { "_id" : 3, "make" : "PRS", "description" : "High-end guitars known for their quality.", "establishedYear" : 1985, "in_stock" : true, "rating" : 9 } { "_id" : 2, "make" : "Gibson", "description" : "Classic guitars known for their rich, full tones.", "establishedYear" : 1902, "in_stock" : true, "rating" : 8 }
queryString演算子の詳細については、 Atlas ガイドのqueryStringを参照してください。
Range(範囲)
Range()メソッドを使用して、指定フィールドの値が特定の数値または日付範囲内にあるドキュメントを検索します。
次の例では、 guitarsコレクションで、 establishedYearの値が 1980 より大きく 2020 より小さいすべてのドキュメントを検索します。
var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.Range(g => g.EstablishedYear, SearchRangeBuilder.Gt(1980).Lt(2020))) .ToList();
この検索では、次の結果が返されます。
{ "_id" : 3, "make" : "PRS", "description" : "High-end guitars known for their quality.", "establishedYear" : 1985, "in_stock" : true, "rating" : 9 } { "_id" : 4, "make" : "Kiesel", "description" : "Quality guitars made only for custom orders.", "establishedYear" : 2015, "in_stock" : false, "rating" : null } { "_id" : 6, "make" : "Strandberg", "description" : "Modern guitars known for their headless models.", "establishedYear" : 1982, "in_stock" : false, "rating" : null }
range演算子の詳細については、 Atlas の範囲ガイド を参照してください。
regex
正規表現を使用してドキュメントを検索するには、 Regex()メソッドを使用します。
次の例では、 guitarsコレクションで、 makeフィールドの値に 6 文字だけが含まれているドキュメントを検索します。
var regex = "[A-Za-z]{6}"; var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.Regex(g => g.Make, regex)) .ToList();
この検索では、次の結果が返されます。
{ "_id" : 1, "make" : "Fender", "description" : "Classic guitars known for their versatility.", "establishedYear" : 1946, "in_stock" : true, "rating" : 9 } { "_id" : 2, "make" : "Gibson", "description" : "Classic guitars known for their rich, full tones.", "establishedYear" : 1902, "in_stock" : true, "rating" : 8 } { "_id" : 4, "make" : "Kiesel", "description" : "Quality guitars made only for custom orders.", "establishedYear" : 2015, "in_stock" : false, "rating" : null } { "_id" : 5, "make" : "Ibanez", "description" : "Well-crafted guitars used by many professional guitarists.", "establishedYear" : 1957, "in_stock" : true, "rating" : 7 }
注意
デフォルトでは、 regex演算子は分析対象フィールドでは実行できません。 次のように、 allowAnalyzedFieldオプションを true に設定することで、分析フィールドで実行できるようになります。
var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.Regex(g => g.Make, regex, true)) .ToList();
allowAnalyzedFieldオプションを true に設定すると、予期しない検索結果が発生する可能性があります。 詳しくは、「正規表現の動作 」を参照してください。
regex演算子の詳細については、 Atlas ガイドの正規表現を参照してください。
span
フィールドのリージョン内に一致するテキスト検索を検索するには、 Span()メソッドを使用します。 このメソッドを使用すると、指定した精度で相互に近い文字列を検索できます。
注意
span演算子は、クエリが位置情報を追跡する必要があるため、他の演算子よりも計算負荷が高くなります。
次の例では、 guitarsコレクションで、 descriptionフィールドの値に 1 単語以内の string が含まれているドキュメントを検索します。
var searchTerms = new[] { Builders<Guitar>.SearchSpan.Term(g => g.Description, "guitars"), Builders<Guitar>.SearchSpan.Term(g => g.Description, "quality") }; var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.Span(Builders<Guitar>.SearchSpan.Near(searchTerms, 1))) .ToList();
検索では、次のドキュメントが返されます。
{ "_id" : 4, "make" : "Kiesel", "description" : "Quality guitars made only for custom orders.", "establishedYear" : 2015, "in_stock" : false, "rating" : null }
_id: 3を含むドキュメントには「groups」と「quality」という文字列が含まれていますが、これらは複数の単語で区切られているため、検索ではこのドキュメントが結果から除外されます。
span演算子の詳細については、 Atlas ガイドの範囲を参照してください。
Text
ドキュメント内で指定された string または string の配列を検索するには、Text() メソッドを使用します。特定の string に複数の検索期間がある場合、 MongoDB Search は 文字列内の各期間の一致も個別に検索します
次の例では、 guitarsコレクションで、 descriptionフィールドの値に「プロが使用する」という string が含まれているドキュメントを検索します。
var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.Text(g => g.Description, "used by professional")) .ToList();
検索では、次のドキュメントが返されます。
{ "_id" : 5, "make" : "Ibanez", "description" : "Well-crafted guitars used by many professional guitarists.", "establishedYear" : 1957, "in_stock" : true, "rating" : 7 }
Tip
検索 string に複数のタームが含まれている場合、このメソッドは string 内の各タームの一致も個別に検索します
text演算子の詳細については、Atlas ガイドのテキストを参照してください。
ワイルドカード
Wildcard() メソッドを使用して、検索stringに任意の文字に一致する特殊文字を使用してドキュメントを検索します。 検索では、次の文字を使用できます。
文字 | 説明 |
|---|---|
| 任意の 1 文字と一致 |
| 0 文字以上の文字と一致 |
| エスケープ文字 |
次の例では、 makeフィールドの値に string「Strand」とそれに続く他の文字が含まれているドキュメントを検索します。
var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.Wildcard(g => g.Make, "Strand*")) .ToList();
検索では、次のドキュメントが返されます。
{ "_id" : 6, "make" : "Strandberg", "description" : "Modern guitars known for their headless models.", "establishedYear" : 1982, "in_stock" : false, "rating" : null }
注意
デフォルトでは、 wildcard演算子は分析対象フィールドでは実行できません。 次のように、 allowAnalyzedFieldオプションを true に設定することで、分析フィールドで実行できるようになります。
var result = guitarsCollection.Aggregate() .Search(Builders<Guitar>.Search.Wildcard(g => g.Make, "Strand*", true)) .ToList();
allowAnalyzedFieldオプションを true に設定すると、予期しない検索結果が発生する可能性があります。 詳しくは、「ワイルドカードの動作 」を参照してください。
wildcard演算子の詳細については、ワイルドカードAtlas のガイドを参照してください。