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);

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

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

プロパティ
説明

Collation

The type of language collation to use when sorting results. See the Collation section of this page for more information.
Default: 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

Specifies the International Components for Unicode (ICU) locale. For a list of supported locales, see Collation Locales and Default Parameters in the MongoDB Server Manual.

If you want to use simple binary comparison, use the Collation.Simple static property to return a Collation object with the locale set to "simple".
Data Type: string

Locale

caseLevel

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

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

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

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

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

CaseLevel

caseFirst

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

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

CaseFirst

strength

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

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

Strength

numericOrdering

(Optional) Specifies whether the driver compares numeric strings as numbers.

If this argument is true, the driver compares numeric strings as numbers. For example, when comparing the strings "10" and "2", the driver treats the values as 10 and 2, and finds 10 to be greater.

If this argument is false or excluded, the driver compares numeric strings as strings. For example, when comparing the strings "10" and "2", the driver compares one character at a time. Because "1" is less than "2", the driver finds "10" to be less than "2".

For more information, see Collation Restrictions in the MongoDB Server manual.

Data Type: boolean
Default: false

NumericOrdering

alternate

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

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

Alternate

maxVariable

(任意) alternate が CollationAlternate.Shifted の場合に、ドライバーが無視可能と見なす文字を指定します。

データ型: CollationMaxVariable
デフォルト: CollationMaxVariable.Punctuation (ドライバーは句読点とスペースを無視します)

MaxVariable

normalization

(任意) ドライバーが必要に応じてテキストを正規化するかどうかを指定します。

ほとんどのテキストは正規化を必要としません。正規化の詳細については、ICUドキュメントを参照してください。

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

Normalization

backwards

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

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

Backwards

For more information about collation, see the Collation page in the MongoDB Server manual.

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

注意

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

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

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

プロパティ
説明

MaxTime

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

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

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

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);

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

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