MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBドキュメント内の部分文字列を置換する方法をわかりやすく解説


MongoDBドキュメント内の部分文字列(サブストリング)を置き換えるには、JavaScriptのreplace()関数を使用します。理解を深めるために、まずドキュメントを含むコレクションを作成してみましょう。コレクションとドキュメントを作成するクエリは以下の通りです。

> db.replaceSubstringDemo.insertOne({"WebsiteURL":"www.gogle.com"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c76eaf21e9c5dd6f1f78276")
}

find()メソッドを使って、コレクション内のすべてのドキュメントを表示します。クエリは以下の通りです。

> db.replaceSubstringDemo.find().pretty();

実行結果

{
   "_id" : ObjectId("5c76eaf21e9c5dd6f1f78276"),
   "WebsiteURL" : "www.gogle.com"
}

それでは、ドキュメント内の部分文字列を置換するためのクエリを見てみましょう。

> db.replaceSubstringDemo.find({WebsiteURL:"www.gogle.com"}).forEach(function(url,k){
   ... url.WebsiteURL=url.WebsiteURL.replace("www.gogle.com","www.google.com");
   ... db.replaceSubstringDemo.save(url)
   ... });

クエリの仕組み

  • find():条件に一致するドキュメントを検索します。
  • forEach():検索結果の各ドキュメントに対して、処理を繰り返し実行します。
  • replace():JavaScriptの文字列メソッドで、「www.gogle.com」を「www.google.com」に置き換えます。
  • save():置換後のドキュメントをコレクションに上書き保存します。

置換が正しく行われたかどうかを確認するため、もう一度コレクションからドキュメントを表示してみましょう。クエリは以下の通りです。

> db.replaceSubstringDemo.find().pretty();

実行結果

{
   "_id" : ObjectId("5c76eaf21e9c5dd6f1f78276"),
   "WebsiteURL" : "www.google.com"
}

「gogle」が「google」に置き換わり、ドキュメントが正しく更新されたことが確認できます。

補足:$replaceAll演算子による一括置換(MongoDB 5.0以降)

MongoDB 5.0以降では、集計パイプライン形式のupdateMany()と$replaceAll演算子を組み合わせることで、シェル側のJavaScriptループに頼らず、サーバー側だけで部分文字列を一括置換することもできます。

> db.replaceSubstringDemo.updateMany(
...   {},
...   [ { $set: { WebsiteURL: { $replaceAll: { input: "$WebsiteURL", find: "gogle", replacement: "google" } } } } ]
... );

用途に応じて、柔軟性の高いforEach()+replace()方式と、効率的な$replaceAll方式を使い分けるとよいでしょう。


  1. MongoDBでドキュメントのフィールドにアクセスする方法|find()とプロジェクションの使い方

    MongoDBでドキュメント内のフィールドにアクセスするには、find()メソッドを使用します。この記事では、実際にコレクションを作成し、ドキュメントを挿入したうえで、特定のフィールドだけを取得する方法をサンプルコード付きで解説します。 コレクションの作成とドキュメントの挿入 まず、サンプル用のコレクション「demo565」を作成し、3件のドキュメントを挿入します。insertOne()メソッドを使って、1件ずつ登録していきましょう。 > db.demo565.insertOne( ... { ... id:101, ... Name:David, ... Countr

  2. Javaを使用してMongoDBのドキュメントを削除するには?基本とサンプルコード解説

    MongoDBでは、既存のコレクションからドキュメントを削除する際に remove() メソッドを使用できます。本記事では、MongoDBシェルでの削除方法と、Javaプログラムからドキュメントを削除する方法を順を追って解説します。 構文 db.coll.remove(削除条件) 各要素の意味は以下のとおりです。 db: 操作対象のデータベース coll: ドキュメントを削除したいコレクション名 例 MongoDBデータベースに students というコレクションがあり、次のドキュメントが登録されていると仮定します。 {name:Ram, age:26, city:Mumbai} {na