-
MongoDBの集約パイプライン(Aggregation Pipeline)を使ってレコードを取得する方法
集約パイプラインとはMongoDBの集約パイプライン(Aggregation Pipeline)は、複数の「ステージ」で構成されるデータ処理の仕組みです。ドキュメントはパイプラインを通過する際に、各ステージで順番に変換されていきます。代表的なステージには、配列を展開する $unwind、条件に合うドキュメントを絞り込む $match、グループ化を行う $group などがあります。この記事では、集約パイプラインを使用してMongoDBから特定の条件に合致するレコードを取得する手順を、実際のコード例とともに解説します。サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成します。以
-
MongoDBでURLレコードから特定のドメイン名を検索する方法
MongoDBに保存されたURLレコードの中から、大文字・小文字を区別せずに特定のドメイン名を検索したいケースはよくあります。そのような場合には、正規表現と /i オプション(大文字小文字を無視するフラグ)を組み合わせて使うのが効果的です。サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成しましょう。ここでは demo219 というコレクションに、ウェブサイトのURLを持つドキュメントを挿入します。> db.demo219.insertOne({details:{WebsiteURL:www.EXAMPLE.com}}); { acknowledged : tru
-
MongoDBで$projectを使って埋め込みドキュメントのisMarriedステータスをすべて取得する方法
MongoDBでドキュメント内にネストされた埋め込みドキュメント(サブドキュメント)から特定のフィールドだけを取り出したい場合、集計パイプラインの $project ステージを利用すると便利です。この記事では、「isMarried」ステータスを持つ埋め込みドキュメントから値をすべて取得する手順を、実際のコード例とともにわかりやすく解説します。1. サンプルコレクションの作成まず、insertOne() メソッドを使って、埋め込みドキュメント details を含むドキュメントをコレクションに挿入します。> db.demo220.insertOne({ ... id:101, ...
-
MongoDB正規表現を使って「john」ではなく「John」という特定の名前のレコードを取得する方法
はじめにMongoDBで特定の単語を検索する場合、正規表現(regex)を利用して /searchWord/ の形式で指定します。正規表現を使うことで、大文字と小文字を区別した検索が可能になり、「john」ではなく「John」のように、正確な表記のレコードだけを取得できます。この記事では、実際にコレクションを作成し、正規表現による検索の手順を順番に解説します。サンプルコレクションの作成まずは、ドキュメントを含むコレクションを作成しましょう。ここでは demo221 というコレクションに、学生の名前と年齢を格納したドキュメントを挿入します。> db.demo221.insertOne({D
-
MongoDBでドキュメントの配列に新しい要素を追加するクエリの書き方
MongoDBで配列に新しい要素を追加する方法MongoDBのドキュメント内にある配列に新しい要素(フィールド)を追加するには、update()メソッドと位置演算子 $ を組み合わせて使用します。まずは、サンプルとなるコレクションを作成してみましょう。1. コレクションの作成insertOne()メソッドを使って、ドキュメントを挿入します。> db.demo222.insertOne({details:[{StudentName:Chris,StudentMarks:78},{StudentName:David,StudentMarks:89}]}); { acknowledge
-
MongoDBで複数のプロパティを比較する方法を解説
MongoDBで複数のプロパティを比較するには?MongoDBでドキュメント内の複数のプロパティ(フィールド)同士を比較したい場合、$where演算子を使用します。$whereを使うと、JavaScriptの式を記述して、同一ドキュメント内のフィールド値を柔軟に比較できます。ここでは、配列「Scores」に格納された2つのスコアを比較する例を見ていきましょう。サンプルコレクションの作成まず、insertOne()メソッドを使ってドキュメントを作成します。> db.demo223.insertOne({Scores:[56,78]}); { acknowledged : true,
-
MongoDBで配列から要素を削除する方法|$pull演算子の使い方を解説
MongoDBで配列から要素を削除するには?MongoDBで配列から特定の要素を削除したい場合は、$pull 演算子を使用します。$pull は、指定した条件に一致する値を配列からすべて取り除くことができる更新演算子です。この記事では、実際にコレクションを作成し、$pull を使って配列から要素を削除するまでの一連の手順をサンプルコード付きで解説します。1. サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成しましょう。ここでは、技術スタックのリスト(ListOfTechnology)を持つドキュメントを2件挿入します。> db.demo224.insertOne({L
-
MongoDBで配列の最後の2つの値を取得する方法($slice演算子の使い方)
MongoDBで配列から最後の2つの値だけを取り出したい場合、$slice 演算子を使うのが便利です。$sliceに負の数(-2など)を指定すると、配列の末尾から指定した件数分の要素を取得できます。コレクションの作成とドキュメントの挿入まず、insertOne()メソッドを使ってサンプルのコレクションを作成し、ドキュメントを挿入します。> db.demo173.insertOne({ListOfValues:[10,40,100,560,700,900]}); { acknowledged : true, insertedId : ObjectId(5e383a4f9e4f0
-
MongoDBのアグリゲーションで配列内の配列(ネストされた配列)をスライスする方法
MongoDBでネストされた配列をスライスするにはMongoDBで配列の中に格納された配列(ネストされた配列)をスライスするには、aggregate()メソッドを使用します。アグリゲーションパイプラインの中で$slice演算子を組み合わせることで、入れ子構造になった配列から必要な要素だけを取り出せます。1. サンプルコレクションの作成まずは、ドキュメントを含むコレクションを作成しましょう。以下のようにinsertOne()メソッドを実行します。> db.demo111.insertOne(... {... &
-
【MongoDB】上限付きコレクション(Capped Collection)の単一フィールドを更新する方法
上限付きコレクションのフィールドを更新するにはcapped: true を設定したコレクション(上限付きコレクション)内のフィールドを更新するには、update() メソッドを使用します。まずは、実際にドキュメントを格納したコレクションを作成して確認していきましょう。1. 上限付きコレクションの作成とドキュメントの挿入以下のコマンドで、サイズと最大ドキュメント数を指定した上限付きコレクション「Demo112」を作成し、ドキュメントを挿入します。> db.createCollection(Demo112, { capped : true, size : 14, max : 3 } ); {
-
MongoDBでビューを作成する方法:createView()の使い方を解説
MongoDBでビューを作成するにはMongoDBでビュー(View)を作成するには、createView()メソッドを使用します。ビューとは、既存のコレクションに対する集計パイプラインの結果を読み取り専用で表示する仮想的なコレクションのことです。元データを変更せずに、必要なフィールドだけを抽出して扱えるのが大きなメリットです。まずは、ドキュメントを含むコレクションを作成してみましょう。> db.demo113.insertOne( ... { _id: 1, StudentId: 101, Details: { Name: Chris, Age: 21 }, Subject: MySQ
-
MongoDBで重複する名前ごとの最大スコアを取得する方法
コレクション内のドキュメントをグループ化して最大スコアを取得するには、group()メソッドを使用します。まず、サンプルドキュメントを含むコレクションを作成しましょう。> db.demo114.insertOne({"Score":60,"Name":"Chris"}); { "acknowledged" : true, "insertedId" : ObjectId("5e2efc57d8f64a552dae6354"
-
MongoDBでフィールドを更新し、既存データを変更するクエリの書き方
MongoDBでフィールドを更新し、現在のデータを変更する方法既存のフィールド値を参照しながらデータを変更したい場合は、find()とupdate()を組み合わせて使用します。まず、ドキュメントを含むコレクションを作成しましょう。> db.demo115.insertOne({LastName:Brown});{ acknowledged : true, insertedId : ObjectId(5e2efe9bd8f64a552dae635a)}作成したドキュメントの確認find()メソッドを使って、コレクション内の
-
【MongoDB】条件に一致する1件のドキュメントだけを取得する方法(findOneの使い方)
MongoDBで条件を満たす単一ドキュメントのみを取得するには?MongoDBで条件に一致するドキュメントを1件だけ取得したい場合は、findOne()メソッドを使用します。find()は条件に合うすべてのドキュメントを返すのに対し、findOne()は最初に見つかった1件のみを返す点が大きな特徴です。まずは、サンプルとなるコレクションを作成し、ドキュメントを挿入してみましょう。> db.demo116.insertOne({EmployeeId:101,EmployeeName:John}); { acknowledged : true, insertedId : Obje
-
MongoDBでドキュメント内の辞書リスト(配列)の値の合計を集計する方法
MongoDBで配列内の値の合計を集計するには MongoDBでは、ドキュメント内にネストされた辞書(サブドキュメント)のリストに含まれる数値の合計を集計したいケースがよくあります。このような場合、aggregate()メソッドと $sum 演算子を組み合わせることで実現できます。この記事では、実際のコード例を通じて、$unwind と $group を使った集計手順をわかりやすく解説します。 1. サンプルコレクションの作成 まず、辞書のリストを含むドキュメントを持つコレクションを作成します。 > db.demo117.insertOne( ... { ... ID
-
$addFieldsパイプラインとMongoDBの$filterオペレーターを使って配列をフィルタリングする方法
$addFieldsパイプラインと$filterオペレーターの組み合わせ MongoDBでは、集計パイプライン(aggregate())内で$addFieldsステージと$filterオペレーターを組み合わせることで、ドキュメント内の配列要素を条件に応じて絞り込むことができます。この記事では、実際のコード例を使いながら、その具体的な使い方を解説します。 1. コレクションを作成してドキュメントを挿入する まず、insertOne()メソッドを使ってサンプルコレクションを作成しましょう。 > db.demo118.insertOne( ... { ... Id : 10
-
MongoDBで複数の配列を1つの配列に集約する方法($project活用術)
複数の配列を1つの配列にまとめて集約するには、MongoDBの集計パイプラインで$projectステージを使用します。この記事では、$setUnion・$ifNull・$filterを組み合わせて、複数の配列フィールドを1つの配列に結合し、さらに条件に一致する要素だけを抽出する方法を解説します。1. サンプルコレクションの作成まずは、insertOne()メソッドでサンプルドキュメントを登録したコレクションを作成しましょう。> db.demo119.insertOne(... {... "_id": 101,... "We
-
MongoDBでブール(Boolean)フィールドを挿入する方法
MongoDBでブールフィールドを挿入するには? ブール型は「true」と「false」という2つの値しか持たないため、MongoDBではそのまま true または false キーワードを使ってフィールドを挿入できます。特別な変換やラッパーは不要です。 ここでは、従業員情報を格納するコレクションを作成し、isMarried フィールドにブール値を設定したドキュメントを挿入する具体例を紹介します。 1. insertOne() でドキュメントを挿入する insertOne() メソッドを使用すると、ブール値を含むドキュメントを1件ずつコレクションに登録できます。配列内のネストされたオブジェクト
-
MongoDBの集計パイプラインでネストされたフィールドを配列のカウント値ごとにグループ化する方法
MongoDBの集計パイプライン(Aggregation Framework)では、ネストされたオブジェクト内の複数のキーをそれぞれグループ化し、対応する値を合計したいケースがよくあります。この記事では、$objectToArray・$unwind・$groupの3つの演算子を組み合わせて、ネストされたフィールドを配列内のカウント値でグループ化する具体的な手順を紹介します。 サンプルコレクションの作成 まず、insertOne()メソッドを使って、ネストされたドキュメントを持つコレクションを作成します。「Details」オブジェクトの中には「X」と「Y」の2つのキーがあり、それぞれが「Valu
-
MongoDBの$nor演算子を使って特定のドキュメントを除外してデータを取得する方法
MongoDBで$nor演算子による除外検索を実装するMongoDBで特定のドキュメントだけを除外し、それ以外のドキュメントを取得したい場合は、$nor 演算子を使用します。$nor は指定した条件のいずれにも一致しないドキュメントを返す論理演算子です。この記事では、実際にコレクションを作成しながら、$nor を使った除外クエリの書き方を順番に解説していきます。1. サンプルコレクションの作成まず、insertOne() メソッドを使ってドキュメントを含むコレクションを作成しましょう。> db.demo100.insertOne({Name:Chris,Age:21}); { ac