MongoDBでオブジェクトからアイテムを削除する方法|$unset演算子の使い方を解説
MongoDBでオブジェクトからアイテムを削除するには?
MongoDBのオブジェクト(ネストされたドキュメント)から特定のアイテム(フィールド)を削除したい場合は、更新演算子の$unsetを使用します。$unsetを指定すると、条件に一致したドキュメントから該当フィールドが完全に取り除かれます。
ここでは、実際にコレクションを作成し、オブジェクト内のフィールドを削除するまでの一連の手順を順番に見ていきましょう。
1. ドキュメントを含むコレクションを作成する
まず、insertOne()メソッドを使ってサンプルドキュメントを挿入します。
> db.demo467.insertOne(
... {
... _id:101,
... "Information":{"Name":"Chris"}
... }
... );
{ "acknowledged" : true, "insertedId" : 101 }
> db.demo467.insertOne(
... {
... _id:102,
... "Information":{"Name":"David"}
... }
... );
{ "acknowledged" : true, "insertedId" : 102 }
2. find()メソッドですべてのドキュメントを表示する
続いて、find()メソッドでコレクション内の全ドキュメントを確認します。
> db.demo467.find();
実行すると、次のような出力が得られます。
{ "_id" : 101, "Information" : { "Name" : "Chris" } }
{ "_id" : 102, "Information" : { "Name" : "David" } }3. $unsetを使ってオブジェクトからアイテムを削除する
以下が、オブジェクト「Information」の中から「Name」フィールドを削除するクエリです。
> db.demo467.update({_id:102},{$unset: {"Information.Name":1}},{multi: true});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })ポイントは、ドット記法(Information.Name)でネストされたフィールドへのパスを指定している点です。これにより、親オブジェクト自体は残しつつ、その中の特定のキーだけをピンポイントで削除できます。
4. 削除後のドキュメントを確認する
もう一度find()メソッドを実行して、結果を確認してみましょう。
> db.demo467.find();
出力は次のようになります。
{ "_id" : 101, "Information" : { "Name" : "Chris" } }
{ "_id" : 102, "Information" : { } }_id:102のドキュメントから「Name」フィールドだけが削除され、「Information」オブジェクトは空の状態で残っていることがわかります。
補足:新バージョンではupdateOne()/updateMany()の使用を推奨
なお、上記のupdate()メソッドは従来の書き方で、現在のMongoDBでは非推奨(deprecated)となっています。最新バージョンでは、単一ドキュメントの更新にはupdateOne()、複数ドキュメントへの一括更新にはupdateMany()を使うのが推奨されています。
> db.demo467.updateOne({_id:102},{$unset: {"Information.Name":1}});また、{multi: true}オプションは、条件に一致したすべてのドキュメントへ更新を適用するための指定です。updateMany()を使用する場合は、このオプションを付ける必要はありません。
-
MySQLテーブルから複数の行を削除する方法
MySQLのテーブルから複数の行(レコード)を一度に削除したい場合は、DELETEステートメントにWHERE句を組み合わせて使用します。WHERE句が削除対象となる複数の行を特定することで、条件に一致したすべての行をまとめて削除できます。基本構文DELETE FROM テーブル名 WHERE 条件;実行例まず、サンプルテーブル「names」の中身を確認しておきましょう。mysql> Select * from names; +------+-----------+ | id | name | +------+-----------+ | 1 | Rahul |
-
JSONスキーマからPythonクラスを自動生成する方法【python-jsonschema-objects活用ガイド】
JSONオブジェクトからPythonクラスを作成するには?JSONデータをPythonで扱う際、辞書型のまま操作すると属性アクセスができず、コードの可読性が低下しがちです。そんなときに便利なのが python-jsonschema-objects というライブラリです。このライブラリは、広く使われている jsonschema を基盤として構築されており、JSONスキーマから自動的にクラスベースのバインディング(クラス定義)を生成し、Python上でオブジェクトのように直感的に扱えるようにしてくれます。この記事では、サンプルのJSONスキーマを使って、実際にPythonクラスを生成し、値の検証ま