MongoDBでカスタム変数を使って特定の値をインクリメントする方法
カスタム変数を使用した値のインクリメントとは
MongoDBでは、カスタム変数を定義し、update()メソッドと$inc演算子を組み合わせることで、特定のフィールドの値を柔軟に増加させることができます。本記事では、実際のコード例を通じて、その手順をわかりやすく解説します。
1. コレクションとドキュメントの作成
まず、insertOne()メソッドを使用して、サンプルドキュメントを含むコレクションを作成しましょう。
> db.demo271.insertOne({"Marks":56});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e4821211627c0c63e7dbabc")
}
> db.demo271.insertOne({"Marks":78});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e4821241627c0c63e7dbabd")
}
> db.demo271.insertOne({"Marks":72});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e48212b1627c0c63e7dbabe")
}2. ドキュメントの確認
find()メソッドを使って、コレクション内のすべてのドキュメントを表示します。
> db.demo271.find();
上記のクエリを実行すると、以下のような出力が得られます。
{ "_id" : ObjectId("5e4821211627c0c63e7dbabc"), "Marks" : 56 }
{ "_id" : ObjectId("5e4821241627c0c63e7dbabd"), "Marks" : 78 }
{ "_id" : ObjectId("5e48212b1627c0c63e7dbabe"), "Marks" : 72 }3. カスタム変数を使ったインクリメント処理
続いて、カスタム変数incrementValueに10を代入し、「Marks」が78であるドキュメントに対して値を加算するクエリを実行します。
> var incrementValue=10;
> db.demo271.update(
... { Marks: 78 },
... { $inc: { Marks:incrementValue } }
...)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })出力結果の"nModified" : 1は、1件のドキュメントが正常に更新されたことを示しています。$inc演算子は、指定したフィールドの値を指定した量だけ増加させる役割を持ちます。
4. 更新結果の確認
もう一度find()メソッドを実行して、更新後のデータを確認してみましょう。
> db.demo271.find();
実行結果は以下の通りです。「Marks」の値が78から88に増加していることが確認できます。
{ "_id" : ObjectId("5e4821211627c0c63e7dbabc"), "Marks" : 56 }
{ "_id" : ObjectId("5e4821241627c0c63e7dbabd"), "Marks" : 88 }
{ "_id" : ObjectId("5e48212b1627c0c63e7dbabe"), "Marks" : 72 }まとめ
このように、カスタム変数と$inc演算子を組み合わせれば、動的に決まる値を使った加算処理を簡単に実装できます。また、変数に負の値を設定すれば減算処理にも対応できるため、ポイント加算や在庫管理など、さまざまなユースケースで活用できる便利なテクニックです。
-
MongoDBの集計フレームワークで特定のフィールド値に一致するドキュメントを取得する方法
MongoDBで特定のフィールド値に一致するドキュメントを抽出したい場合は、集計フレームワーク(Aggregation Framework)の $match ステージを使用します。この記事では、実際にコレクションを作成しながら、$match を使った条件一致と、$group を組み合わせた件数集計の手順を解説します。1. サンプルコレクションの作成まず、insertOne() メソッドを使って、複数のドキュメントを含むコレクションを作成します。> db.demo555.insertOne({CountryName:US});{ acknowledged : true, inser
-
MongoDBで配列をクエリして特定の値を取得する方法
配列から特定の値を取得するには、aggregate()メソッドと$projectステージを組み合わせて使用します。まずは、ドキュメントを含むコレクションを作成してみましょう。 > db.demo761.insertOne( ... { ... "details": [ ... { ... "