返すフィールドを指定する
Overview
このガイドでは、プロジェクションを使用して、読み取り操作から返されるフィールドを指定する方法を学習できます。 プロジェクションは、MongoDB がクエリから返すフィールドを指定するドキュメントです。
サンプル データ
このガイドの例では、 Atlas サンプル データセットのsample_restaurants
データベース内の restaurants
コレクションを使用します。 MongoDB Atlas クラスターを無料で作成して、サンプル データセットをロードする方法については、 「 Atlas を使い始める 」ガイドを参照してください。
プロジェクションのタイプ
プロジェクションを使用して、返されるドキュメントに含めるフィールドを指定したり、除外するフィールドを指定したりできます。
プロジェクションに含める特定のフィールドを指定すると、他のすべてのフィールドは暗黙的に除外されます(デフォルトで含まれる_id
フィールドを除く)。 _id
フィールドを除外しない限り、1 つのプロジェクションに包含ステートメントと除外ステートメントを組み合わせることはできません。
返されたドキュメントから_id
フィールドを削除するには、明示的に除外する必要があります。
含めるフィールドの指定
次の例では、mongoc_collection_find_with_opts()
関数を使用して、name
フィールドの値が "Emerald Pub"
であるすべてのレストランを検索します。これは、mongoc_collection_find_with_opts()
のオプション パラメータを使用して、返されたドキュメントの name
、cuisine
、および borough
フィールドのみを返すプロジェクションを指定します。
const bson_t *doc; bson_t *filter = BCON_NEW ("name", BCON_UTF8 ("Emerald Pub")); bson_t *opts = BCON_NEW ("projection", "{", "name", BCON_BOOL (true), "cuisine", BCON_BOOL (true), "borough", BCON_BOOL (true), "}"); mongoc_cursor_t *results = mongoc_collection_find_with_opts (collection, filter, opts, NULL); while (mongoc_cursor_next (results, &doc)) { char *str = bson_as_canonical_extended_json (doc, NULL); printf ("%s\n", str); bson_free (str); } bson_destroy (filter); bson_destroy (opts); mongoc_cursor_destroy (results);
{ "_id" : { "$oid" : "..." }, "borough" : "Manhattan", "cuisine" : "American", "name" : "Emerald Pub" } { "_id" : { "$oid" : "..." }, "borough" : "Queens", "cuisine" : "American", "name" : "Emerald Pub" }
フィールドを除外する_id
含めるフィールドを指定する場合は、返されるドキュメントから_id
フィールドを除外することもできます。
次の例では、前の例と同じクエリを実行しますが、プロジェクションから_id
フィールドを除外しています。
const bson_t *doc; bson_t *filter = BCON_NEW ("name", BCON_UTF8 ("Emerald Pub")); bson_t *opts = BCON_NEW ("projection", "{", "name", BCON_BOOL (true), "cuisine", BCON_BOOL (true), "borough", BCON_BOOL (true), "_id", BCON_BOOL (false), "}"); mongoc_cursor_t *results = mongoc_collection_find_with_opts (collection, filter, opts, NULL); while (mongoc_cursor_next (results, &doc)) { char *str = bson_as_canonical_extended_json (doc, NULL); printf ("%s\n", str); bson_free (str); } bson_destroy (filter); bson_destroy (opts); mongoc_cursor_destroy (results);
{ "borough" : "Manhattan", "cuisine" : "American", "name" : "Emerald Pub" } { "borough" : "Queens", "cuisine" : "American", "name" : "Emerald Pub" }
詳細情報
プロジェクションの詳細については、MongoDB Server マニュアルのプロジェクト フィールド ガイドを参照してください。
API ドキュメント
このガイドで説明した関数や型の詳細については、次のAPIドキュメントを参照してください。