MongoDB でプッシュ配列を更新する
- MongoDB の演算子
-
MongoDB の
$push
演算子 - MongoDB の配列に要素をプッシュする
- MongoDB の配列の先頭に要素をプッシュする
- MongoDB の配列の末尾に要素をプッシュする
- MongoDB で複数の要素をプッシュする
この教育記事では、さまざまな手法を使用して MongoDB の配列に要素を追加する方法を紹介します。 配列への要素のプッシュまたは追加は、既存の MongoDB ドキュメントでオブジェクトを追加または移動してリストをすばやく追加するのに非常に便利です。
このレッスンでは、push
操作に負の整数と正の整数の両方を使用する方法を説明します。負の整数は、データを配列に入れるための追加の push
の可能性を提供します。
前提条件:
- MongoDB の配列に要素を追加するには、MongoDB を適切にインストールして構成する必要があります。
- 配列がどのように機能するかについての基本的な理解。
まず、この記事の目次を見てみましょう。
- MongoDB の演算子
- MongoDB の
$push
演算子 - 要素を配列にプッシュする
- 配列の先頭に要素をプッシュする
- 配列の最後に要素をプッシュする
MongoDB の演算子
演算子は、数学演算または論理演算の実行方法をコンパイラまたはインタプリタに指示する特別な記号またはキーワードです。 クエリ演算子は、開発者が複雑なクエリを記述してアプリケーションに関連するデータ セットとやり取りできるようにすることで、MongoDB の機能を拡張します。
以下は、MongoDB のさまざまなタイプの演算子です。
- クエリおよびプロジェクション オペレータ - クエリ オペレータはデータベース内のデータの検出を支援しますが、プロジェクション オペレータはデータの表示方法を変更します。
- 更新オペレーター - 更新オペレーターを使用すると、データベースのデータを変更または追加できます。
- アグリゲーション パイプライン ステージ - アグリゲーション パイプラインで利用可能なアグリゲーション ステージ。
- 集約パイプライン オペレータ - 集約パイプライン オペレーションには、パイプライン ステージでドキュメントを定義および操作するために使用できる一連のオペレータがあります。
- クエリ修飾子 - クエリ修飾子は、クエリの実行方法を決定します。
MongoDB の$push
演算子
MongoDB では、$push
演算子を使用して値を配列にアタッチします。 $push
オペレーターは update
オペレーターです。
指定されたフィールドが変更中のドキュメントにない場合、$push
演算子は、指定された値を要素として持つ新しいフィールドとしてそれを作成します。 更新フィールドが配列型でない場合、操作は失敗しました。
更新時に、値が配列の場合、$push
演算子は配列全体を 1つの要素として追加します。 $push
演算子を $each
修飾子と共に使用して、各値要素を個別に追加します。
構文:
db.collection.update( <query>,{ $push: { <field>: <value> } })
MongoDB $push
演算子の例:
条件 subjects
が maths
のときに配列フィールドに 95
を追加したい場合は、以下の MongoDB コマンドを使用できます。
db.student.update( { "subjects" : "maths" },{ $push: { "achieve": 95 } });
前の例で説明した基準がこのアクションに一致するため、値 95
が配列の結果に追加されます。
新しく更新されたドキュメントを表示するには:
db.student.find().pretty();
上記のクエリの出力は、このスクリーンショットで確認できます。
フィールドが配列でない場合の MongoDB $push
の例:
配列型フィールドではない sem
列に 2
を追加したい場合は、以下の MongoDB コマンドを使用できます。
db.student.update( { "subjects" : "maths" },{ $push: { "sem": 2 } });
上記の例の sem
フィールドは配列型ではないため、操作は失敗し、次の結果が生成されます。
Cannot apply $push/$push All modifier to non-array
MongoDB の配列に要素をプッシュする
このセクションでは、update
操作などの $push
演算子を使用して、要素を配列に追加する方法を示します。
まず、次のように果物を含むサンプル データセットを作成します。
use fruitdb
switched to db fruitdb
db.fruit.insert({
"_id": "100",
"fruitArray": ['mango', 'banana', 'orange']
});
WriteResult({ "nInserted" : 1 })
次のコマンドで挿入プロセスを確認します。
db.fruit.find({_id: "100"});
結果は次のようになります。
fruitArray
に別の果物を追加します。 この例では、次のコマンドを実行して pineapple
を追加します。
db.fruit.update(
{ "_id": "100" },
{
$push: {
fruitArray: "pineapple"
}
}
);
結果は次のようになります。
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
次のコマンドを実行して、パイナップルが要素として fruitArray
に正常に追加されたことを確認します。
db.fruit.find({_id: "100"}).pretty();
出力は次のようになります。
結果は、$push
演算子が単語 pineapple
を fruitArray
の最後に挿入したことを示しています。
MongoDB の配列の先頭に要素をプッシュする
前のセクションでは、配列の先頭に新しい要素を追加する方法について説明しました。 このセクションでは、要素 grapes
を配列の先頭に挿入する方法を示します。
このアクションを実行するには、次のコマンドを使用します。
db.fruit.update(
{ "_id": "100" },
{
$push: {
fruitArray: {
$each: ['grapes'],
$position: 0
}
}
}
);
次のコマンドは、更新手順が成功したことを確認できます。
db.fruit.find({_id: "100"}).pretty();
出力は次のようになります。
演算子 $position
は前の操作で使用されました。 名前が示すように、このコマンドは、ユーザーが定義したとおりに要素を配列内に配置します。
また、$position
値に使用される正の整数は、配列の左または先頭からプッシュされることに注意してください。
MongoDB の配列の末尾に要素をプッシュする
前のセクションでは、$position
演算子の値として正の整数を使用して、配列の先頭に要素を挿入する方法を示しました。 このパートでは、ここで示されているように、負の整数を値として使用してアイテムをプッシュする方法を説明します。
db. fruit.update(
{ "_id": "100" },
{
$push: {
fruitArray: {
$each: ['apple'],
$position: -1
}
}
});
出力は次のようになります。
値に -1
を使用すると、apple
は要素リストの最後から 2 番目の位置に配置され、最後の要素は位置 0
になります。
MongoDB で複数の要素をプッシュする
このセクションでは、複数の要素を配列に挿入またはプッシュする方法を示します。
まず、fruit
ドキュメント内に別の配列を追加します。
db. fruit.insert({
"_id": "101",
"fruitArray": ["strawberry","guava","lemon"]
});
次の情報を含む新しいドキュメントが生成されます。
次に、次のコマンドを使用して、多数の要素を新しいドキュメントに追加します。
db.fruit.update(
{ "_id": "101" },
{
$push: {
fruitArray: {
$each: ['pear', 'cherry', 'lime'],
$position: -2
}
}
}
);
上記のコードでは項目 ['pear', 'cherry', 'lime']
がプッシュされているため、この配列は 1つの要素として表示される場合があります。 これにより、pear
が指定された -2
の位置にプッシュまたは移動され、次に cherry
と lime
がこの順序で続きます。
要素は指定された順序で配列に追加されることに注意してください。
この記事では、MongoDB の配列に要素を追加するためのさまざまな方法について説明しました。 最初に、このレッスンでは、update
操作など、$push
演算子を使用して要素を配列に追加する方法を示しました。
次に、サンプル データセットを生成し、要素を配列に挿入し、最後に挿入プロセスをテストする方法を示しました。 この記事では、配列の先頭、中間、末尾に要素をプッシュする方法と、複数の要素をプッシュする方法についても説明しました。
値として負の整数を指定すると要素が配列の末尾にプッシュされますが、正の整数を指定すると配列の左または先頭から要素がプッシュされます。