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

MongoDBでサブフィールドを条件にクエリを実行する方法【ドット記法】

MongoDBでサブフィールドを条件にクエリを実行する方法

MongoDBでは、ドット(.)記法を使用することで、ネストされたオブジェクト内のサブフィールドを対象にクエリを実行できます。本記事では、実際にコレクションを作成しながら、サブフィールドによるデータ検索の手順を具体例とともに解説します。

1. ドキュメントを含むコレクションの作成

まず、insertOne()メソッドを使って、サブフィールドを持つドキュメントをコレクションに挿入します。以下のクエリを実行してください。

> db.queryBySubFieldDemo.insertOne(
   ... {
      ... "StudentPersonalDetails" : {"StudentName" : "John","StudentHobby" :"Photography"},
      ... "StudentScores" : {"MathScore" : 56}
   ... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c92c2995259fcd195499808")
}

続けて、もう1件のドキュメントも挿入しておきましょう。

> db.queryBySubFieldDemo.insertOne(
   ... {
      ... "StudentPersonalDetails" : {"StudentName" : "Chris","StudentHobby" :"Reading"},
      ... "StudentScores" : {"MathScore" : 97}
   ... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c92c2df5259fcd195499809")
}

2. 登録済みドキュメントの確認

find()メソッドを使用すると、コレクション内のすべてのドキュメントを表示できます。以下のクエリを実行します。

> db.queryBySubFieldDemo.find().pretty();

実行結果は次のとおりです。

{
   "_id" : ObjectId("5c92c2995259fcd195499808"),
   "StudentPersonalDetails" : {
      "StudentName" : "John",
      "StudentHobby" : "Photography"
   },
   "StudentScores" : {
      "MathScore" : 56
   }
}
{
   "_id" : ObjectId("5c92c2df5259fcd195499809"),
   "StudentPersonalDetails" : {
      "StudentName" : "Chris",
      "StudentHobby" : "Reading"
   },
   "StudentScores" : {
      "MathScore" : 97
   }
}

3. サブフィールドを指定したクエリの実行

それでは、いよいよサブフィールドを指定してクエリを実行してみましょう。ここでは、「StudentPersonalDetails」フィールド内の「StudentName」というサブフィールドを検索条件として使用します。

> db.queryBySubFieldDemo.find({"StudentPersonalDetails.StudentName":"Chris"}).pretty();

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

{
   "_id" : ObjectId("5c92c2df5259fcd195499809"),
   "StudentPersonalDetails" : {
      "StudentName" : "Chris",
      "StudentHobby" : "Reading"
   },
   "StudentScores" : {
      "MathScore" : 97
   }
}

まとめ

このように、「親フィールド名.サブフィールド名」という形式でドット記法を指定するだけで、ネストされたフィールドの値を簡単に検索できます。複雑なドキュメント構造を持つMongoDBを扱う上で非常に重要な基本テクニックなので、ぜひマスターしておきましょう。

  1. MongoDBでコレクションの名前を変更する方法(renameCollectionの使い方)

    MongoDBで既存のコレクションの名前を変更したい場合、renameCollection()メソッドを使用します。この記事では、実際にコレクションを作成し、その名前を変更するまでの手順を順番に解説します。1. ドキュメントを含むコレクションを作成するまず、insertOne()メソッドを使ってサンプルドキュメントを挿入し、コレクション「demo690」を作成します。> db.demo690.insertOne({_id:101,Name:Sam}); { acknowledged : true, insertedId : 101 } > db.demo690.insertOne(

  2. MongoDBで埋め込みドキュメント(配列内のサブドキュメント)をクエリする方法

    MongoDBの埋め込みドキュメントをクエリするには?MongoDBでは、ドキュメントの中に配列として埋め込まれたサブドキュメントをクエリする場合、aggregate()メソッドを使用するのが効果的です。この記事では、$unwindと$matchを組み合わせて、埋め込みドキュメントから条件に合うデータを抽出する手順を解説します。1. サンプルコレクションの作成まずは、学生情報を配列として持つドキュメントを含むコレクションを作成しましょう。insertOne()メソッドを使ってドキュメントを挿入します。> db.demo705.insertOne( ... { ...