MongoDBでmultiオプションをtrueに設定して配列に値を追加する方法
配列に値を追加(プッシュ)するには、update()メソッドと$push演算子を組み合わせて使用し、第3引数のmultiオプションをtrueに設定します。これにより、検索条件に一致したすべてのドキュメントに対して、一括で値を追加することが可能になります。
1. サンプルコレクションの作成
まず、ドキュメントを格納したコレクションを作成しましょう。
> db.demo747.insertOne({"CountryName":["US","IND"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5eae6a50a930c785c834e55f")
}
> db.demo747.insertOne({"CountryName":["UK","US"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5eae6a57a930c785c834e560")
}
> db.demo747.insertOne({"CountryName":["UK","IND"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5eae6a60a930c785c834e561")
}2. ドキュメントの確認
find()メソッドを使用して、コレクション内のすべてのドキュメントを表示します。
> db.demo747.find();
上記のコマンドを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5eae6a50a930c785c834e55f"), "CountryName" : [ "US", "IND" ] }
{ "_id" : ObjectId("5eae6a57a930c785c834e560"), "CountryName" : [ "UK", "US" ] }
{ "_id" : ObjectId("5eae6a60a930c785c834e561"), "CountryName" : [ "UK", "IND" ] }3. $pushとmultiオプションによる一括更新
続いて、update()で$pushを実装するための正しいクエリを見ていきましょう。検索条件として空のドキュメント「{}」を指定し、「{multi:true}」を渡すことで、コレクション内のすべてのドキュメントのCountryName配列に「AUS」が追加されます。
> db.demo747.update({},{$push:{CountryName:"AUS"}},{multi:true});
WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })実行結果から、3件のドキュメントが条件に一致し(nMatched: 3)、3件すべてが更新されたこと(nModified: 3)が確認できます。
4. 更新後のドキュメント確認
もう一度find()メソッドを使用して、コレクション内のすべてのドキュメントを表示してみましょう。
> db.demo747.find();
上記のコマンドを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5eae6a50a930c785c834e55f"), "CountryName" : [ "US", "IND", "AUS" ] }
{ "_id" : ObjectId("5eae6a57a930c785c834e560"), "CountryName" : [ "UK", "US", "AUS" ] }
{ "_id" : ObjectId("5eae6a60a930c785c834e561"), "CountryName" : [ "UK", "IND", "AUS" ] }このように、multiオプションをtrueに設定することで、条件に一致したすべてのドキュメントの配列に対して、$pushによる値の追加を一度の操作で実行できます。なお、multiオプションを指定しない場合(デフォルトはfalse)は、最初に一致した1件のドキュメントしか更新されない点に注意してください。
-
MySQLのTEXTデータ型フィールドに格納された文字列を連結する方法
MySQLのTEXTデータ型として定義されたフィールドの値に、別の文字列を連結したい場合には、CONCAT()関数を使用します。CONCAT()関数は、複数の文字列を1つに結合するための便利な関数で、UPDATE文と組み合わせることで、既存のフィールド値の末尾に新しい文字列を追加できます。ここでは、実際のサンプルを通して手順を解説します。1. テーブルの作成まず、TEXTデータ型のカラムを持つテーブルを作成します。mysql> create table DemoTable644 (Title text); Query OK, 0 rows affected (0.81 sec)2. レコ
-
PHPで連想配列に値を追加(プッシュ)する方法
PHPで連想配列(associative array)に新しい値を追加するには、角括弧 [] を使用します。まずは、基本的な連想配列を作成してみましょう。 US ); この配列を別の連想配列に格納するには、キー名を指定した角括弧を使って値を代入します。以下がその具体例です。 サンプルコード <!DOCTYPE html> <html> <body> <?php $details = array ( id => 101, name => John Smith, countryName