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

MongoDBで文字列を数値に変換する方法を徹底解説

MongoDBでは、文字列として保存された数値データを実際の数値型に変換するには、シェル上でスクリプトを実行する必要があります。本記事では、サンプルコレクションを作成し、forEach()parseInt()を組み合わせて文字列を整数へ変換する手順を、実行結果付きでわかりやすく解説します。

1. サンプルコレクションの作成

まず、文字列型の「EmployeeId」を持つドキュメントを格納したコレクションを作成します。insertOne()メソッドを使って、3件のドキュメントを挿入しましょう。

> db.convertStringToNumberDemo.insertOne({"EmployeeId":"101","EmployeeName":"Larry"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f56528d10a061296a3c31")
}
> db.convertStringToNumberDemo.insertOne({"EmployeeId":"1120","EmployeeName":"Mike"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f56648d10a061296a3c32")
}
> db.convertStringToNumberDemo.insertOne({"EmployeeId":"3210","EmployeeName":"Sam"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f566e8d10a061296a3c33")
}

この時点では、「EmployeeId」はダブルクォートで囲まれた文字列型として保存されています。

2. 登録されたドキュメントの確認

find()メソッドを使って、コレクション内のすべてのドキュメントを表示してみましょう。

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

実行すると、以下のように各ドキュメントが出力されます。

{
   "_id" : ObjectId("5c7f56528d10a061296a3c31"),
   "EmployeeId" : "101",
   "EmployeeName" : "Larry"
}
{
   "_id" : ObjectId("5c7f56648d10a061296a3c32"),
   "EmployeeId" : "1120",
   "EmployeeName" : "Mike"
}
{
   "_id" : ObjectId("5c7f566e8d10a061296a3c33"),
   "EmployeeId" : "3210",
   "EmployeeName" : "Sam"
}

出力結果を見ると、「EmployeeId」が引用符付きの文字列(例:"101")になっていることが確認できます。

3. 文字列を数値に変換するクエリ

それでは、文字列型の「EmployeeId」を整数型に変換します。ポイントは、find()で全ドキュメントを取得しながらforEach()で1件ずつ処理し、update()$set演算子を使ってparseInt()の変換結果で上書きすることです。

> db.convertStringToNumberDemo.find().forEach(function(x)
   ... {
      ... db.convertStringToNumberDemo.update
      ... (
         ...
         ... {
            ... "_id": x._id,
            ...
         ... },
         ... {
            ... "$set":
            ... {
               ... "EmployeeId": parseInt(x.EmployeeId)
            ... }
         ... }
      ... )
   ... }
... );

クエリの仕組み

  • forEach(function(x)):コレクション内の各ドキュメントを順番に取り出します。
  • _id: x._id:対象ドキュメントを一意に特定するため、_idを条件に指定します。
  • $set:既存のフィールド値を新しい値で更新します。
  • parseInt(x.EmployeeId):JavaScriptのparseInt()関数で文字列を整数に変換します。

4. 変換結果の確認

変換後、再度find()メソッドでドキュメントを確認してみましょう。

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

以下の出力のように、文字列だった「EmployeeId」が整数型(引用符なし)に変換されていることがわかります。

{
   "_id" : ObjectId("5c7f56528d10a061296a3c31"),
   "EmployeeId" : 101,
   "EmployeeName" : "Larry"
}
{
   "_id" : ObjectId("5c7f56648d10a061296a3c32"),
   "EmployeeId" : 1120,
   "EmployeeName" : "Mike"
}
{
   "_id" : ObjectId("5c7f566e8d10a061296a3c33"),
   "EmployeeId" : 3210,
   "EmployeeName" : "Sam"
}

まとめ

MongoDBで文字列を数値に変換するには、forEach()で各ドキュメントを走査し、parseInt()で変換した値を$setで更新するのが基本的なアプローチです。なお、小数を扱いたい場合はparseFloat()を、より大規模なデータの一括変換には集計パイプラインの$toInt$convert演算子を活用するのも有効です。データ型を適切に揃えておくことで、ソートや範囲検索などのクエリ性能も向上します。

  1. 文字列をJavaScriptオブジェクトに変換する方法【JSON.parse()の使い方】

    JavaScriptでJSON形式の文字列をオブジェクトに変換するには、JSON.parse()メソッドを使用します。このメソッドは、引数に渡された文字列を解析(パース)し、対応するJavaScriptオブジェクトを返します。 サンプルコード <!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <title>Docum

  2. C#でリスト(List)を文字列に変換する方法をわかりやすく解説

    C#では、string.Joinメソッドを使うことで、リスト(List)の要素を簡単にひとつの文字列に結合できます。ここでは、基本的な手順とサンプルコードを紹介します。 手順1:リストを宣言する まず、文字列型のリストを宣言します。 List<string> l = new List<string>(); 手順2:リストに要素を追加する 次に、Addメソッドを使ってリストに要素を追加していきます。 // 要素の追加 l.Add(Accessories); l.Add(Footwear); l.Add(Watches); 手順3:リストを文字列に変換する string.J