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演算子を活用するのも有効です。データ型を適切に揃えておくことで、ソートや範囲検索などのクエリ性能も向上します。
-
文字列を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
-
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