AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

Retrieve Data

このガイドでは、MongoDB .NET/C# ドライバーを使用して、読み取り操作により MongoDB コレクションからデータを取得する方法を学習できます。Find() メソッドを呼び出して、基準のセットに一致するドキュメントを取得できます。

Tip

インタラクティブ ラボ

このページには、 Find()メソッドを使用してデータを取得する方法を示す短いインタラクティブ ラボが含まれています。 MongoDB やコード エディターをインストールしなくても、ブラウザ ウィンドウでこのラボを直接完了できます。

ラボを開始するには、ページ上部の [ Open Interactive Tutorial ] ボタンをクリックします。 ラボを全画面形式に展開するには、ラボ ペインの右上隅にある全画面ボタン( )をクリックします。

このガイドの例では、Atlasサンプルデータセットsample_restaurants.restaurantsコレクションを使用します。MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 「 .NET/ C#ドライバーを使い始める 」を参照してください。

このページの例では、次の Restaurant クラス、Address クラス、GradeEntry クラスをモデルとして使用します。

public class Restaurant
{
public ObjectId Id { get; set; }
public string Name { get; set; }
[BsonElement("restaurant_id")]
public string RestaurantId { get; set; }
public string Cuisine { get; set; }
public Address Address { get; set; }
public string Borough { get; set; }
public List<GradeEntry> Grades { get; set; }
}
public class Address
{
public string Building { get; set; }
[BsonElement("coord")]
public double[] Coordinates { get; set; }
public string Street { get; set; }
[BsonElement("zipcode")]
public string ZipCode { get; set; }
}
public class GradeEntry
{
public DateTime Date { get; set; }
public string Grade { get; set; }
public float? Score { get; set; }
}

注意

restaurantsコレクションのドキュメントは、スニペット ケースの命名規則を使用します。このガイドの例では、ConventionPack を使用してコレクション内のフィールドをパスカル ケースに逆シリアル化し、Restaurantクラスのプロパティにマップします。

カスタム直列化について詳しくは、「カスタム直列化」を参照してください。

コレクションからドキュメントを検索するには、Find() メソッドを使用します。Find() メソッドはクエリフィルターを受け取り、一致するすべてのドキュメントを返します。クエリフィルターは、クエリで検索するドキュメントを指定するオブジェクトです。

クエリフィルターの詳細については、クエリフィルターの作成を参照してください。

コレクション内の 1 つのドキュメントを検索するには、検索するドキュメントの基準を指定するクエリフィルターを渡し、FirstOrDefault() メソッドまたは FirstOrDefaultAsync() メソッドを連鎖させます。複数のドキュメントがクエリフィルターに一致する場合、これらのメソッドは検索した結果から最初に一致するドキュメントを返します。クエリフィルターに一致するドキュメントがない場合、メソッドは null を返します。

var restaurants = _restaurantsCollection.Find(filter).FirstOrDefault();
var restaurants = await _restaurantsCollection.Find(filter).FirstOrDefaultAsync();

Tip

最初のドキュメント

ソート条件が指定されていない場合、 FirstOrDefault()メソッドはディスク上の自然な順序で最初のドキュメントを返します。

Find()メソッドを使用して 1 つのドキュメントを検索する完全な例については、「追加情報 」を参照してください。

コレクション内の複数のドキュメントを検索するには、検索するドキュメントの基準を指定するクエリフィルターを Find() メソッドに渡します。

カーソルを使用して、Find() メソッドによって返されたドキュメントを反復処理できます。カーソルは、アプリケーションがデータベースの結果を反復処理しながら、特定の時点でメモリ内に結果のサブセットのみを保持できるようにするメカニズムです。カーソルは、Find() メソッドが大量のドキュメントを返す場合に便利です。

カーソルを使用してドキュメントを反復処理するには、検索するドキュメントの基準を指定するクエリフィルターを Find() メソッドに渡し、ToCursor() メソッドまたは ToCursorAsync() メソッドをチェーンします。同期または非同期の例を表示するには、対応するタブを選択します。

var restaurants = _restaurantsCollection.Find(filter).ToCursor();
var restaurants = await _restaurantsCollection.Find(filter).ToCursorAsync();

返されるドキュメントの数が少ない場合、または結果を List オブジェクトとして返す必要がある場合は、ToList() メソッドまたは ToListAsync() メソッドを使用します。

コレクション内の複数のドキュメントを検索し、それらをリストとしてメモリに保持するには、検索するドキュメントの基準を指定するクエリフィルターを Find() メソッドに渡し、ToList() メソッドまたは ToListAsync() メソッドをチェーンします。同期または非同期の例を表示するには、対応するタブを選択します。

var restaurants = _restaurantsCollection.Find(filter).ToList();
var restaurants = await _restaurantsCollection.Find(filter).ToListAsync();

Find()メソッドを使用して複数のドキュメントを検索する完全な例については、「追加情報 」を参照してください。

注意

すべてのドキュメントの検索

コレクション内のすべてのドキュメントを検索するには、Find() メソッドに空のフィルターを渡します。

var filter = Builders<Restaurant>.Filter.Empty;
var allRestaurants = _restaurantsCollection.Find(filter);

Find()メソッドを使用してすべてのドキュメントを検索する完全に実行可能な例については、「追加情報 」を参照してください。

FindOptions オブジェクトを渡すことで、Find() メソッドの動作を変更できます。

一般的に使用されるオプションは、次の方法で構成できます。

方式
説明

BatchSize

クエリ結果で返される各バッチする内のドキュメントの最大数を取得または設定します。batchSize が設定されていない場合、Find() メソッドの初期バッチ サイズは 101 ドキュメントで、その後の各バッチの最大サイズは 16 メビバイト(MiB)です。このオプションは、16 MiB より小さい制限を強制することはできますが、それを越える制限を強制することはできません。batchSize を 16 MiB より大きいバッチになる制限に設定すると、このオプションは効果がなく、Find() メソッドはデフォルトのバッチ サイズを使用します。

Collation

照合オプションを設定します。詳細については、このページの「照合」セクションを参照してください。

Comment

クエリのコメントを設定して、プロファイラー ログでの検索を容易にします。

Hint

使用するインデックスのヒントを設定します。

MaxTime

この操作のサーバー上での最大実行時間を設定します。

利用可能なオプションの完全なリストを確認するには、FindOptions プロパティを参照してください。

操作の照合を構成するには、照合クラスのインスタンスを作成します。

次の表では、Collation コンストラクターが受け入れるパラメーターを説明しています。また、各設定の値を読み取るために使用できる対応するクラスプロパティも一覧表示されます。

Parameter
説明
クラスプロパティ

locale

国際化コンポーネント for Unicode (ICU) ロケールを指定します。サポートされているロケールの一覧については、MongoDB Server マニュアルの「照合ロケールとデフォルトパラメータ」を参照してください。

単純なバイナリ比較を使用する場合は、Collation.Simple 静的プロパティを使用して、locale"simple" に設定された Collation オブジェクトを返します。
データ型: string

Locale

caseLevel

(任意) 大文字と小文字の比較を含めるかどうかを指定します。

この引数が true の場合、ドライバーの動作は strength 引数の値によって異なります。

- strengthCollationStrength.Primary の場合、ドライバーは基本文字と大文字と小文字を比較します。
- strengthCollationStrength.Secondary の場合、ドライバーは基本文字、分音符号、その他の二次的な違い、および大文字と小文字を比較します。
- strength がその他の値の場合、この引数は無視されます。

この引数が false の場合、ドライバーは強度レベル Primary または Secondary での大文字と小文字の比較を含みません。

データ型: boolean
デフォルト: false

CaseLevel

caseFirst

(任意) 三次レベルの比較中の大文字と小文字の相違のソート順序を指定します。

データ型: CollationCaseFirst
デフォルト: CollationCaseFirst.Off

CaseFirst

strength

(任意) ICU ドキュメントで定義されている、実行する比較のレベルを指定します。

データ型: CollationStrength
デフォルト: CollationStrength.Tertiary

Strength

numericOrdering

(任意) ドライバーが数字の文字列を数値として比較するかどうかを指定します。

この引数が true の場合、ドライバーは数値型文字列を数値として比較します。例えば、文字列 "10" と "2" を比較する場合、ドライバーは値を 10 と 2 として取り扱い、10 が大きいことを確認します。

この引数が false の場合、または除外される場合、ドライバーは数値型文字列を文字列として比較します。例えば、文字列 "10" と "2" を比較する場合、ドライバーは 1 文字ずつ比較します。"1" は "2" より小さいため、ドライバーは "10" が "2" より小さいことを確認します。

詳細については、MongoDB Server マニュアルの「照合制限」を参照してください。

データ型: boolean
デフォルト: false

NumericOrdering

alternate

(任意) ドライバーが比較の基準文字として空白と句読点を考慮するかどうかを指定します。

データ型: CollationAlternate
デフォルト: CollationAlternate.NonIgnorable (空白と句読点は基準文字と見なされます)

Alternate

maxVariable

(任意) alternateCollationAlternate.Shifted引数が

の場合にドライバーが無視可能と見なす文字を指定します。データ型: CollectionMaxVvariable
デフォルト:CollationMaxVariable.Punctuation (ドライバーは句読点とスペースを無視します)

MaxVariable

normalization



(任意)ドライバーが必要に応じてテキストを正規化するかどうかを指定します。ほとんどのテキストは正規化を必要としません。正規化の詳細については、 ICU

のドキュメントを参照してください。データ型:boolean
デフォルト:false

Normalization

backwards

(任意) 発音区別符号を含む string を、string の後ろから前にソートするかどうかを指定します。

データ型: boolean
デフォルト: false

Backwards

照合の詳細については、 MongoDB Serverマニュアルの 照合 ページを参照してください。

この例では、次のアクションを実行します。

  • cuisine フィールドに "Pizza" が含まれるすべてのドキュメントを検索

  • BatchSize3 に設定

  • 結果をカーソルに保存

  • カーソルが参照するドキュメントを印刷

var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Pizza");
var findOptions = new FindOptions { BatchSize = 3 };
using (var cursor = _restaurantsCollection.Find(filter, findOptions).ToCursor())
{
foreach (var r in cursor.ToEnumerable())
{
WriteLine(r.Name);
}
}
Pizza Town
Victoria Pizza
...

Tip

クリーンアップ

カーソルが使用されなくなったら Dispose() メソッドを自動的に呼び出すには、 using ステートメント を使用してカーソルを作成します。

クエリフィルターの詳細については、クエリフィルターの作成を参照してください。

LINQ を使用してクエリを指定する方法については、「 集計操作用の LINQシンタックス 」を参照してください。

検索操作の実行可能な例については、次の使用例を参照してください。

このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。