MongoDB からのデータの読み取り
項目一覧
Overview
このページでは、 Cドライバーを使用してドキュメントを検索するために使用できる一般的な関数を示すコピー可能なコード例を紹介します。
Tip
このページに表示されている関数の詳細については、各セクションに提供されている関連するガイドへのリンクを参照してください。
このページの例を使用するには、コード例をサンプル アプリケーションまたは独自のアプリケーションにコピーします。 <connection string URI>
など、コード例にあるすべてのプレースホルダーを、MongoDB 配置に関連する値に置き換えてください。
サンプル アプリケーション
次のサンプルアプリケーションを使用して、このページのコード例をテストできます。 サンプル アプリケーションを使用するには、次の手順を実行します。
Cドライバーがインストールされていることを確認します。
次のコードをコピーし、新しい
.c
ファイルに貼り付けます。このページからコード例をコピーし、 ファイル内の指定された行に貼り付けます。
1 2 3 4 5 int 6 main (void) 7 { 8 mongoc_client_t *client; 9 mongoc_collection_t *collection; 10 char *str; 11 bson_error_t error; 12 13 mongoc_init (); 14 15 client = mongoc_client_new ("<connection string URI>"); 16 collection = mongoc_client_get_collection (client, "<database name>", "collection name"); 17 18 // Start example code here 19 20 // End example code here 21 22 mongoc_collection_destroy (collection); 23 mongoc_client_destroy (client); 24 mongoc_cleanup (); 25 26 return EXIT_SUCCESS; 27 }
Tip
Cドライバーをインストールする方法については、 はじめにガイドの「 ダウンロードとインストール 」を参照してください。
ドキュメントの検索
次の例では、指定されたフィルターで指定された条件に一致するドキュメントのリストを検索します。
bson_t *query = bson_new (); // Add fields to query here mongoc_cursor_t* results = mongoc_collection_find_with_opts (collection, query, NULL, NULL); const bson_t *doc; while (mongoc_cursor_next (results, &doc)) { str = bson_as_canonical_extended_json (doc, NULL); printf ("%s\n", str); bson_free (str); } mongoc_cursor_destroy (results); bson_destroy (query);
mongoc_collection_find_with_opts()
関数の詳細については、「 ドキュメントの検索 」ガイドを参照してください。
コレクション内のドキュメントをカウント
次の例では、指定された コレクション内のドキュメントの数を返します。
bson_t *query = bson_new (); int64_t count = mongoc_collection_count_documents (collection, query, NULL, NULL, NULL, &error); printf ("%" PRId64 "\n", count); bson_destroy (query);
mongoc_collection_count_documents()
関数の詳細については、 ドキュメントのカウントガイドの「 正確なカウントの取得 」セクションを参照してください。
クエリから返されたドキュメントをカウントする
次の例では、指定されたフィルターによって指定された条件に一致するドキュメントの数を返します。
bson_t *query = bson_new (); // Add fields to query here int64_t count = mongoc_collection_count_documents (collection, query, NULL, NULL, NULL, &error); printf ("%" PRId64 "\n", count); bson_destroy (query);
mongoc_collection_count_documents()
関数の詳細については、 ドキュメントのカウントガイドの「 正確なカウントの取得 」セクションを参照してください。
推定ドキュメント数
次の例では、コレクションのメタデータに基づいて、指定されたコレクション内のドキュメントのおおよその数を返します。
int64_t count = mongoc_collection_estimated_document_count (collection, NULL, NULL, NULL, &error); printf ("%" PRId64 "\n", count);
mongoc_collection_estimated_document_count()
関数の詳細については、 ドキュメントのカウントガイドの「 推定カウントの取得 」セクションを参照してください。
Retrieve Distinct Values
次の例では、指定されたコレクション内の指定されたフィールド名のすべての個別の値を返します。
bson_t reply; bson_t *command = BCON_NEW ("distinct", BCON_UTF8 ("<collection name>"), "key", BCON_UTF8 ("<field name>")); if (!mongoc_collection_read_command_with_opts (collection, command, NULL, NULL, &reply, &error)) { fprintf (stderr, "An error occurred: %s\n", error.message); } else { str = bson_as_canonical_extended_json (&reply, NULL); printf ("%s\n", str); bson_free (str); } bson_destroy(&reply); bson_destroy(command);
コマンドの詳細については、「distinct
個別のフィールド値の取得 」ガイドを参照してください。
データの変更を監視
次の例では、特定のコレクションの変更ストリームを作成し、そのコレクション内の後続の変更イベントを出力します。
mongoc_change_stream_t *change_stream; bson_t *pipeline = bson_new (); // Add stages to pipeline here const bson_t *doc; change_stream = mongoc_collection_watch (collection, pipeline, NULL); while (mongoc_change_stream_next (change_stream, &doc)) { str = bson_as_canonical_extended_json (doc, NULL); printf ("Change: %s\n", str); bson_free (str); } bson_destroy (pipeline); mongoc_change_stream_destroy (change_stream);
mongoc_collection_watch()
関数の詳細については、「 データの変更の監視 」ガイドを参照してください。