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

MongoDBでスペースを含むキー名をクエリする方法【初心者向け解説】

MongoDBでは、フィールド名(キー)にスペースが含まれていても、ドット(.)表記ダブルクォートを組み合わせることで、問題なくクエリを実行できます。この記事では、実際のコード例を使いながら、スペースを含むキーへのクエリ方法を段階的に解説します。

ステップ1: スペースを含むキーを持つオブジェクトを作成する

まず、キー名にスペースが含まれるオブジェクトを作成します。以下がそのクエリです。

> myValues["Details"] = {}
{ }
> myValues["Details"]["Student Name"]="John";
John
> myValues["Details"]["StudentAge"]=26;
26

この例では、「Details」オブジェクトの中に、スペースを含む「Student Name」というキーを作成しています。

ステップ2: コレクションにドキュメントを挿入する

次に、コレクションを作成し、上記で作成したオブジェクトをドキュメントとして保存します。以下がそのクエリです。

> db.keyHavingSpaceDemo.insertOne( myValues);
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ca27e3b6304881c5ce84ba4")
}

挿入したデータの確認

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

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

これにより、次のような出力が得られます。

{
   "_id" : ObjectId("5ca27e3b6304881c5ce84ba4"),
   "Details" : {
       "Student Name" : "John",
       "StudentAge" : 26
   }
}

スペースを含むキーをクエリする方法

それでは、「Student Name」のようにスペースを含むキー名を実際にクエリしてみましょう。ポイントは、キーのパス全体をダブルクォートで囲むことです。以下がそのクエリです。

> db.keyHavingSpaceDemo.find({ "Details.Student Name": "John"} ).pretty();

実行すると、条件に一致するドキュメントが次のように出力されます。

{
   "_id" : ObjectId("5ca27e3b6304881c5ce84ba4"),
   "Details" : {
       "Student Name" : "John",
       "StudentAge" : 26
   }
}

押さえておきたいポイント

  • スペースを含むキーへも、通常どおりドット表記でアクセスできます。
  • キーのパス全体をダブルクォート(" ")で囲むことが必須です。囲まないとMongoDBシェルが構文エラーを返します。
  • ネストされたドキュメントの場合は、「親キー.子キー」の形式でパスを指定します。
  • 設計時には可能な限りスペースを含まないキー名(キャメルケースやスネークケース)を採用すると、後々のクエリやアプリケーション側の処理がシンプルになります。
  1. MongoDBで大文字と小文字を区別せずに特定の名前のドキュメントを取得するクエリ

    MongoDBで、フィールド値の大文字と小文字の違いに関係なくドキュメントを検索したい場合には、$regex演算子を使用します。この記事では、「David」という名前を持つドキュメントを、大文字・小文字を問わず検索する方法を解説します。サンプルコレクションの作成まず、デモ用のコレクションにドキュメントを挿入します。意図的に「david」「DAVID」「David」など、大文字と小文字が異なる名前を登録している点に注目してください。> db.demo700.insertOne( { details: [ { Name:david }]}); { acknowledged : true

  2. MongoDBで1つのクエリを使って複数のドキュメントを一括更新する方法(bulkWrite活用ガイド)

    MongoDBで1つのクエリで複数のドキュメントを更新するには?MongoDBで1回のリクエスト(1つのクエリ)で複数のドキュメントを効率的に更新したい場合は、bulkWrite()メソッドを使用します。bulkWrite()は、複数の書き込み操作(insert、update、deleteなど)をまとめてサーバーに送信できるため、個別にクエリを発行するよりもパフォーマンス面で優れています。ここでは、updateOne操作を組み合わせて、複数のドキュメントのフィールドを一度に更新する手順を具体的に解説します。1. コレクションの作成とドキュメントの挿入まず、insertOne()メソッドを使って