MongoDBのドキュメント配列から文字列を削除する方法【$pull演算子の使い方】
MongoDBでは、$pull演算子を使うことで、ドキュメント内の配列から特定の文字列(値)を簡単に削除できます。この記事では、実際のコマンド例を通じて、$pull演算子による配列要素の削除手順をステップごとに解説します。
テスト用コレクションの作成
まず、insertOne()メソッドを使って、数値と文字列が混在した配列「Score」を持つドキュメントを作成します。
> db.removeAStringDemo.insertOne({"Score":[45,67,89,"John",98,99,67]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cda5224b50a6c6dd317adbd")
}
登録されたドキュメントの確認
find()メソッドにpretty()を組み合わせると、コレクション内のすべてのドキュメントを整形された読みやすい形式で表示できます。
> db.removeAStringDemo.find().pretty();
実行結果は以下の通りです。
{
"_id" : ObjectId("5cda5224b50a6c6dd317adbd"),
"Score" : [
45,
67,
89,
"John",
98,
99,
67
]
}
$pull演算子で文字列を削除する
ここでは、配列「Score」から文字列「John」を削除します。update()メソッドの第2引数で$pull演算子を指定し、削除したい値を渡すだけでOKです。
> db.removeAStringDemo.update( { _id :ObjectId("5cda5224b50a6c6dd317adbd") }, { $pull: { "Score":"John" }});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
出力結果の「nModified : 1」は、1件のドキュメントが正常に更新されたことを示しています。
削除後のドキュメントを再確認
もう一度find()メソッドを実行して、更新結果を確認してみましょう。
> db.removeAStringDemo.find().pretty();
実行結果は以下の通りです。
{
"_id" : ObjectId("5cda5224b50a6c6dd317adbd"),
"Score" : [
45,
67,
89,
98,
99,
67
]
}
このように、「Score」配列から文字列「John」だけが取り除かれ、数値の要素はそのまま残っていることが確認できました。
補足:$pull演算子の応用ポイント
$pull演算子は単一の値だけでなく、条件式との組み合わせにも対応しています。たとえば { $pull: { Score: { $gte: 90 } } } のように記述すれば、90以上の数値をまとめて削除できます。また、配列内に削除対象の値が複数存在する場合、一致するすべての要素が削除される点には注意してください。特定の位置の要素を1つだけ削除したい場合は、$popや$unsetなど別の演算子を検討するとよいでしょう。
-
MongoDBで配列の要素を削除するには?$pull演算子の使い方を解説
MongoDBで配列から要素を削除する基本MongoDBで配列内の要素を削除したい場合は、$pull演算子を使用します。$pullは、既存の配列から指定した値、または条件に一致するすべてのインスタンスを取り除くための更新演算子です。この記事では、実際にコレクションを作成し、ネストされた配列から特定の要素を削除する手順を順番に解説します。サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成しましょう。ここでは「software」フィールドの中に「services」という配列を持つドキュメントを挿入します。db.demo541.insertOne({software:{servic
-
MongoDBコレクションから重複を削除する方法|unique制約の使い方を解説
MongoDBコレクションから重複を削除する方法MongoDBのコレクションに重複データが登録されるのを防ぎたい場合は、ユニーク制約(unique: true)を設定するのが最も基本的かつ確実な方法です。対象フィールドにユニークインデックスを作成しておくことで、同じ値を持つドキュメントの挿入が自動的に拒否され、コレクション内に重複が存在しない状態を維持できます。基本構文以下のように、コレクション名とフィールド名を指定してユニークインデックスを作成します。「dropDups: true」を付けることで、インデックス作成時点で既に存在していた重複ドキュメントも削除され、各グループの最初の1件のみが