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

ドキュメントの検索

このガイドでは、Cドライバーを使用して、読み取り操作によりMongoDBコレクションからドキュメントを検索して検索する方法を学習できます。mongoc_collection_find_with_opts() 関数を呼び出して、クエリフィルターで指定された一連の条件に一致するドキュメントを検索することができます。

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

mongoc_collection_find_with_opts()関数はクエリフィルターを受け取り、コレクションから一致するすべてのドキュメントを返します。クエリフィルターは、ドライバーがコレクションのドキュメントを照合するために使用する基準を指定するドキュメントです。

クエリフィルターの詳細については、「クエリの指定」ガイドを参照してください。

次の例では、 mongoc_collection_find_with_opts() 関数を使用して、cuisineフィールドの値が "Spanish" であるすべてのドキュメントを検索します。

bson_t *filter = BCON_NEW("cuisine", BCON_UTF8("Spanish"));
mongoc_cursor_t *results =
mongoc_collection_find_with_opts(collection, filter, NULL, NULL);

前の例の mongoc_collection_find_with_opts()操作はmongoc_cursor_t * を返します。これを反復処理するには、mongoc_cursor_next() 関数と を使用します。 次の例ではを反復処理し、前のクエリで返された結果を出力します。

const bson_t *doc;
bson_error_t error;
while (mongoc_cursor_next(results, &doc)) {
char *str = bson_as_canonical_extended_json(doc, NULL);
printf("%s\n", str);
bson_free(str);
}
// Ensure we iterated through cursor without error
if (mongoc_cursor_error(results, &error)) {
fprintf(stderr, "Error getting results: %s\n", error.message);
}
mongoc_cursor_destroy(results);
bson_destroy(filter);
{ "_id" : { "$oid" : "..." }, "name" : "Charle'S Corner Restaurant & Deli", "cuisine" : "Spanish", ... }
{ "_id" : { "$oid" : "..." }, "name" : "Real Madrid Restaurant", "cuisine" : "Spanish", ... }
{ "_id" : { "$oid" : "..." }, "name" : "Malaga Restaurant", "cuisine" : "Spanish", ... }
{ "_id" : { "$oid" : "..." }, "name" : "Cafe Espanol", "cuisine" : "Spanish", ... }
{ "_id" : { "$oid" : "..." }, "name" : "Cafe Riazor", "cuisine" : "Spanish", ... }
...

注意

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

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

bson_t *empty_filter = bson_new();
mongoc_cursor_t *results =
mongoc_collection_find_with_opts(collection, empty_filter, NULL, NULL);
mongoc_cursor_destroy(results);
bson_destroy(empty_filter);

構成するオプションを含む bson_t 構造を渡すことで、mongoc_collection_find_with_opts() 関数の動作を変更できます。 次の表では、クエリの変更に一般的に使用されるオプションについて説明しています。

オプション
説明

collation

クエリの 照合 オプションを設定します。

comment

クエリに付属する string を指定します。これにより、サーバーログとプロファイルデータでの操作の追跡と解釈が容易になります。クエリコメントの詳細については、MongoDB Server マニュアルの「カーソル.comment()」ページを参照してください。MongoDB Server マニュアルのページ。

hint

クエリに使用するインデックスを指定します。

limit

クエリから返されるドキュメントの数を制限します。

maxTimeMS

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

skip

スキップするドキュメントの数を設定します。

sort

クエリに適用するソート条件を定義します。

次の例では、 limitmaxTimeMS オプションを使用して、クエリによって返されるドキュメント数を 10 に制限し、操作の最大実行時間を 10000 ミリ秒に設定します。

bson_t *filter = BCON_NEW("cuisine", BCON_UTF8("Spanish"));
bson_t *opts = BCON_NEW("limit", BCON_INT32(10), "maxTimeMS", BCON_INT32(10000));
mongoc_cursor_t *results =
mongoc_collection_find_with_opts(collection, filter, opts, NULL);
mongoc_cursor_destroy(results);
bson_destroy(filter);
bson_destroy(opts);

の動作を変更するオプションの完全なリストについては、 mongoc_collection_find_with_opts()MongoDB Serverマニュアルの find メソッドのドキュメントを参照してください。

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

Cドライバーを使用してドキュメントを取得する実行可能なコード例については、「データの読み取り」を参照してください。

このガイドで説明されている関数の詳細については、次のAPIドキュメントを参照してください。