MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBでドット記法を使ってネストされたオブジェクトの値を検索する方法

MongoDBでコレクション内の値を検索するには、find()メソッドを使用します。ネストされたオブジェクト(ドキュメント内のサブドキュメント)のフィールドにアクセスしたい場合は、ドット記法を活用します。本記事では、オブジェクトをキーとして値を取得する具体的な手順を解説します。

サンプルコレクションの作成

まず、ドキュメントを含むコレクションを作成しましょう。insertOne()メソッドを使って、「details」というネストされたオブジェクトを持つ3つのドキュメントを挿入します。

> db.demo361.insertOne({"details":{"FirstName":"Chris","LastName":"Brown"}});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e56a61f54a481fef8ec7a19")
}
> db.demo361.insertOne({"details":{"FirstName":"David","LastName":"Miller"}});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e56a62854a481fef8ec7a1a")
}
> db.demo361.insertOne({"details":{"FirstName":"John","LastName":"Doe"}});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e56a63654a481fef8ec7a1b")
}

すべてのドキュメントを表示する

次に、find()メソッドを使って、コレクション内のすべてのドキュメントを表示します。

> db.demo361.find();

このクエリを実行すると、以下のような出力が得られます。

{ "_id" : ObjectId("5e56a61f54a481fef8ec7a19"), "details" : { "FirstName" : "Chris", "LastName" : "Brown" } }
{ "_id" : ObjectId("5e56a62854a481fef8ec7a1a"), "details" : { "FirstName" : "David", "LastName" : "Miller" } }
{ "_id" : ObjectId("5e56a63654a481fef8ec7a1b"), "details" : { "FirstName" : "John", "LastName" : "Doe" } }

ドット記法で特定のフィールドのみを取得する

ネストされたオブジェクトの中から特定のフィールドだけを取り出すには、第2引数にプロジェクションを指定し、ドット記法でフィールド名を記述します。以下は、「details.LastName」のみを取得するクエリの例です。

> db.demo361.find({},{"details.LastName":1});

実行結果は以下の通りです。

{ "_id" : ObjectId("5e56a61f54a481fef8ec7a19"), "details" : { "LastName" : "Brown" } }
{ "_id" : ObjectId("5e56a62854a481fef8ec7a1a"), "details" : { "LastName" : "Miller" } }
{ "_id" : ObjectId("5e56a63654a481fef8ec7a1b"), "details" : { "LastName" : "Doe" } }

ポイントのまとめ

  • find()の第1引数は検索条件、第2引数は取得するフィールドの指定(プロジェクション)です。
  • ネストされたフィールドには「親フィールド.子フィールド」のようにドット記法でアクセスできます。
  • _idはデフォルトで返されるため、不要な場合は{"_id": 0}を指定して除外できます。

このように、MongoDBではドット記法を組み合わせることで、ネストされたオブジェクトの任意の値を柔軟かつ効率的に検索・取得することが可能です。

  1. JavaScriptのSetでオブジェクトを検索する方法(hasメソッドの使い方)

    Setのhasメソッドによる要素の検索JavaScriptのSetクラスには、セット内に指定した要素が存在するかどうかを調べるためのhasメソッドが用意されています。数値や文字列などのプリミティブ値は値そのもので比較されますが、オブジェクトを検索する場合は注意が必要です。同じ内容を持つオブジェクトでも、メモリ上の参照(アドレス)が異なれば別のオブジェクトとして扱われます。つまり、hasメソッドでオブジェクトを検索するには、セットに追加したときと同じオブジェクトへの参照を渡す必要があります。サンプルコードlet mySet = new Set(); let myObj = {name: John

  2. 【JavaScript】配列内のネストされたオブジェクトの値を合計する方法

    この記事では、JavaScriptを使って、配列内にネストされた(入れ子構造の)オブジェクトの値を合計する方法を解説します。サンプルコードでは、JSONデータの複数階層に格納された数値(costNum)を順番に取り出し、その合計をブラウザ上に表示します。 コード例 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=d