AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
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

Unicode 用の国際コンポーネント(ICU)ロケールを指定します。サポートされているロケールのリストについては、 MongoDB Serverマニュアルの 「照合ロケールとデフォルト パラメーター」 を参照してください。単純なバイナリ比較を使用する場合は、

Collation.SimpleCollationlocale静的プロパティを使用して、 が"simple" に設定されている
オブジェクトを返します。データ型:string

Locale

caseLevel

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

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

strengthCollationStrength.Primary の場合、ドライバーは基本文字と大文字と小文字を比較します。
- がstrength CollationStrength.Secondaryの場合、ドライバーは基本文字、発音区別符号、その他のセカンダリ レベルの相違、大文字と小文字を比較します。
-strength がその他の値の場合、この引数は無視されます。この引数が

falseの場合、ドライバーは強度レベルPrimary またはSecondary

での大文字と小文字の比較を含めません。データ型:boolean
デフォルト:false

CaseLevel

caseFirst



(任意)三次レベルの比較中に、大文字と小文字の相違のソート順序を指定します。データ型: CollationCateFirst
デフォルト:CollationCaseFirst.Off

CaseFirst

strength

(任意) ICU

ドキュメントで定義されている比較のレベルを指定します。データ型: 照合強度
デフォルト:CollationStrength.Tertiary

Strength

numericOrdering

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

trueの場合、ドライバーは数字の string を数値として比較します。例、string "10 " と "2 " を比較する場合、ドライバーはその値を10 と2 として処理し、 が大きいことが検出されます。この引数が10

falseまたは除外されている場合、ドライバーは数字の string を string として比較します。例、string "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 ドキュメントを参照してください。