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

ドキュメントをカウント

このガイドでは、コレクション内のドキュメント数の正確な推定値を取得する方法を学習できます。

このガイドの例では、 studentsというコレクション内の次のドキュメントを使用します。

{ "_id": 1, "name": "Jonathon Howard ", "finalGrade": 87.5 }
{ "_id": 2, "name": "Keisha Freeman", "finalGrade": 12.3 }
{ "_id": 3, "name": "Wei Zhang", "finalGrade": 99.0 }
{ "_id": 4, "name": "Juan Gonzalez", "finalGrade": 85.5 }
{ "_id": 5, "name": "Erik Trout", "finalGrade": 72.3 }
{ "_id": 6, "name": "Demarcus Smith", "finalGrade": 88.8 }

次のStudentクラスは、このコレクション内のドキュメントをモデル化します。

public class Student {
public int Id { get; set; }
public string Name { get; set; }
public double FinalGrade { get; set; }
}

注意

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

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

クエリフィルターに一致するドキュメントの数をカウントするには、 CountDocuments()メソッドを使用します。 空のクエリフィルターを渡すと、このメソッドはコレクション内のドキュメントの総数を返します。

次の例では、 finalGradeの値が80より小さいドキュメントの数をカウントします。

var filter = Builders<Student>.Filter.Lt(s => s.FinalGrade, 80.0);
var count = _myColl.CountDocuments(filter);
Console.WriteLine("Number of documents with a final grade less than 80: " + count);
Number of documents with a final grade less than 80: 2

CountOptions型をパラメータとして渡すことで、 CountDocuments()の動作を変更できます。 オプションを指定しない場合、ドライバーはデフォルト値を使用します。

CountOptionsオブジェクトでは、次のプロパティを設定できます。

プロパティ
説明

Collation

結果をソートするときに使用する言語照合のタイプ。詳細については、このページの「照合」セクションを参照してください。
デフォルト: null

Hint

カウントするドキュメントをスキャンするために使用するインデックス。
デフォルト: null

Limit

カウントするドキュメントの最大数。
デフォルト: 0

MaxTime

サーバー上でクエリを実行する最大時間。
デフォルト: null

Skip

カウントする前にスキップするドキュメントの数。
デフォルト: 0

Tip

CountDocuments()を使用してコレクション内のドキュメントの合計数を返す場合、MongoDB はコレクションスキャンを実行します。 ヒント を使用して_idフィールドの組み込みインデックスを活用することで、コレクションスキャンを回避し、このメソッドのパフォーマンスを向上させることができます。 この手法は、空のクエリ パラメータを使用してCountDocuments()を呼び出す場合にのみ使用してください。

var filter = Builders<Student>.Filter.Empty;
CountOptions opts = new CountOptions(){Hint = "_id_"};
var count = collection.CountDocuments(filter, opts);

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

次の表では、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マニュアルの 照合 ページを参照してください。

コレクション内のドキュメントの合計数を見積もるには、 EstimatedDocumentCount()メソッドを使用します。

注意

EstimatedDocumentCount()メソッドは、コレクション全体をスキャンするのではなく、コレクションのメタデータを使用するため、 CountDocuments()メソッドよりも効率的です。

EstimatedDocumentCountOptions型をパラメータとして渡すことで、 EstimatedDocumentCount()の動作を変更できます。 オプションを指定しない場合、ドライバーはデフォルト値を使用します。

EstimatedDocumentCountOptionsオブジェクトでは、次のプロパティを設定できます。

プロパティ
説明

MaxTime

サーバー上でクエリを実行する最大時間。
デフォルト: null

次の例では、students コレクション内のドキュメントの数を見積ります。

var count = _myColl.EstimatedDocumentCount();
Console.WriteLine("Estimated number of documents in the students collection: " + count);
Estimated number of documents in the students collection: 6

Count()ビルダー メソッドを使用して、集計パイプライン内のドキュメントの数をカウントできます。

次の例では、次のアクションが実行されます。

  • 一致ステージを指定して、 FinalGradeの値が80より大きいドキュメントを検索します

  • 条件に一致するドキュメントの数をカウントする

var filter = Builders<Student>
.Filter.Gt(s => s.FinalGrade, 80);
var result = _myColl.Aggregate().Match(filter).Count();
Console.WriteLine("Number of documents with a final grade more than 80: " + result.First().Count);
Number of documents with a final grade more than 80: 4

上記で説明されている操作の詳細については、次のガイドを参照してください。

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