MongoDBでドキュメントのフィールドにアクセスする方法|find()とプロジェクションの使い方
MongoDBでドキュメント内のフィールドにアクセスするには、find()メソッドを使用します。この記事では、実際にコレクションを作成し、ドキュメントを挿入したうえで、特定のフィールドだけを取得する方法をサンプルコード付きで解説します。
コレクションの作成とドキュメントの挿入
まず、サンプル用のコレクション「demo565」を作成し、3件のドキュメントを挿入します。insertOne()メソッドを使って、1件ずつ登録していきましょう。
> db.demo565.insertOne(
... {
... id:101,
... Name:"David",
... "CountryName":"US"
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e90896739cfeaaf0b97b577")
}
>
> db.demo565.insertOne(
... {
... id:102,
... Name:"Carol",
... "CountryName":"UK"
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e90896839cfeaaf0b97b578")
}
>
> db.demo565.insertOne(
... {
... id:103,
... Name:"Sam",
... "CountryName":"AUS"
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e90896839cfeaaf0b97b579")
}
すべてのドキュメントを表示する
find()メソッドを引数なしで実行すると、コレクション内のすべてのドキュメントを表示できます。
> db.demo565.find();
実行すると、以下のように登録済みの全ドキュメントが出力されます。
{ "_id" : ObjectId("5e90896739cfeaaf0b97b577"), "id" : 101, "Name" : "David", "CountryName" : "US" }
{ "_id" : ObjectId("5e90896839cfeaaf0b97b578"), "id" : 102, "Name" : "Carol", "CountryName" : "UK" }
{ "_id" : ObjectId("5e90896839cfeaaf0b97b579"), "id" : 103, "Name" : "Sam", "CountryName" : "AUS" }
条件を指定して特定のフィールドにアクセスする
フィールドへアクセスする基本的なクエリは以下の通りです。find()の第1引数に検索条件(Nameが「Carol」かつCountryNameが「UK」)を指定し、第2引数にプロジェクション({Name:1})を指定しています。
> db.demo565.find({"Name":"Carol",CountryName:"UK"},{Name:1});
このクエリを実行すると、条件に一致したドキュメントから「Name」フィールドのみが取得され、以下の出力が得られます。
{ "_id" : ObjectId("5e90896839cfeaaf0b97b578"), "Name" : "Carol" }
ポイント解説
- 第1引数(クエリ):検索条件を指定します。ここでは「Name」が「Carol」で「CountryName」が「UK」のドキュメントを対象としています。
- 第2引数(プロジェクション):取得したいフィールドを
1(true)で指定します。これにより、該当フィールドだけが結果に含まれます。 - _idについて:
_idはデフォルトで常に返されます。不要な場合は、プロジェクションに{_id:0}を追加することで除外できます。
このように、find()メソッドに検索条件とプロジェクションを組み合わせることで、必要なフィールドだけを効率的に取得できます。大量のドキュメントを扱う際には、取得するフィールドを絞ることでパフォーマンス向上にもつながります。
-
MongoDBでドキュメント内に要素が存在するかどうかを確認する方法
MongoDBのドキュメント内に特定の要素(フィールド)が存在するかどうかを確認するには、$exists演算子を使用します。ここでは、実際にコレクションを作成してドキュメントを挿入しながら、具体的な手順をわかりやすく解説していきます。 コレクションの作成とドキュメントの挿入 まず、insertOne()メソッドを使って、サンプルデータを含むコレクション「demo497」を作成します。 > db.demo497.insertOne({"details":[{"Name":"Chris"},{"Name":&q
-
MongoDBクエリでサブドキュメント(埋め込みドキュメント)にアクセスする方法
MongoDBでサブドキュメント(埋め込みドキュメント)にアクセスするには、find()メソッドとドット表記(dot notation)を組み合わせて使用します。ドット表記では、「親フィールド名.子フィールド名」の形式でネストされたフィールドを指定できます。1. コレクションとドキュメントの作成まず、サブドキュメントを含むドキュメントを持つコレクションを作成しましょう。 db.demo670.insertOne({ id:102, details: { Name:David, Age:22, CountryName:UK, SubjectName:MySQL } } ); { ackno