Docs Menu
Docs Home
/ / /
C ドライバー

MongoDB からのデータの読み取り

項目一覧

  • Overview
  • サンプル アプリケーション
  • ドキュメントの検索
  • コレクション内のドキュメントをカウント
  • クエリから返されたドキュメントをカウントする
  • 推定ドキュメント数
  • Retrieve Distinct Values
  • データの変更を監視

このページでは、 Cドライバーを使用してドキュメントを検索するために使用できる一般的な関数を示すコピー可能なコード例を紹介します。

Tip

このページに表示されている関数の詳細については、各セクションに提供されている関連するガイドへのリンクを参照してください。

このページの例を使用するには、コード例をサンプル アプリケーションまたは独自のアプリケーションにコピーします。 <connection string URI>など、コード例にあるすべてのプレースホルダーを、MongoDB 配置に関連する値に置き換えてください。

次のサンプルアプリケーションを使用して、このページのコード例をテストできます。 サンプル アプリケーションを使用するには、次の手順を実行します。

  1. Cドライバーがインストールされていることを確認します。

  2. 次のコードをコピーし、新しい.cファイルに貼り付けます。

  3. このページからコード例をコピーし、 ファイル内の指定された行に貼り付けます。

1#include <bson/bson.h>
2#include <mongoc/mongoc.h>
3#include <stdio.h>
4
5int
6main (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()関数の詳細については、 ドキュメントのカウントガイドの「 推定カウントの取得 」セクションを参照してください。

次の例では、指定されたコレクション内の指定されたフィールド名のすべての個別の値を返します。

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()関数の詳細については、「 データの変更の監視 」ガイドを参照してください。

戻る

大きなファイルの保存