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

MongoDBの$toString演算子で値を文字列に変換する方法

MongoDBの$toString演算子とは

MongoDBの集計(aggregate)パイプラインでは、$toString演算子を使用することで、ObjectIdなどのさまざまな型の値を文字列に変換できます。ここでは、実際の例を通して$toStringの使い方を詳しく解説します。

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

まず、概念を理解するために、ドキュメントを含むコレクションを作成しましょう。コレクションを作成するためのクエリは以下の通りです。

> db.objectidToStringDemo.insertOne({"UserName":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c92b80036de59bd9de0639d")
}
> db.objectidToStringDemo.insertOne({"UserName":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c92b80436de59bd9de0639e")
}
> db.objectidToStringDemo.insertOne({"UserName":"Larry"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c92b80936de59bd9de0639f")
}
> db.objectidToStringDemo.insertOne({"UserName":"Robert"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c92b81836de59bd9de063a0")
}

上記のクエリでは、4人のユーザー(John、Chris、Larry、Robert)のドキュメントを挿入し、それぞれに自動的にObjectIdが割り当てられています。

登録したドキュメントの確認

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

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

実行結果は以下の通りです。

{ "_id" : ObjectId("5c92b80036de59bd9de0639d"), "UserName" : "John" }
{ "_id" : ObjectId("5c92b80436de59bd9de0639e"), "UserName" : "Chris" }
{ "_id" : ObjectId("5c92b80936de59bd9de0639f"), "UserName" : "Larry" }
{ "_id" : ObjectId("5c92b81836de59bd9de063a0"), "UserName" : "Robert" }

この時点では、_idフィールドにはObjectId型の値が格納されていることがわかります。

$toStringでObjectIdを文字列に変換する

それでは、MongoDBのaggregateでObjectIdを文字列値に変換するクエリを見ていきましょう。$projectステージ内で$toStringを使用します。

> db.objectidToStringDemo.aggregate([
   ... {
      ... $project: {
        ... _id: {
          ... $toString: "$_id"
        ... }
      ... }
   ... }
... ]
... );

実行結果は以下の通りです。

{ "_id" : "5c92b80036de59bd9de0639d" }
{ "_id" : "5c92b80436de59bd9de0639e" }
{ "_id" : "5c92b80936de59bd9de0639f" }
{ "_id" : "5c92b81836de59bd9de063a0" }

ご覧のとおり、ObjectId(...)というラップが外れ、_idフィールドが純粋な文字列として出力されました。これにより、文字列としての比較や他システムへの連携が容易になります。

$toObjectIdで元のObjectIdに戻す

逆に、文字列化された値を元のObjectIdに戻したい場合は、$toObjectId演算子を使用します。

> db.objectidToStringDemo.aggregate([ { $project: { _id: { $toObjectId: "$_id" } } } ] );

実行結果は以下の通りです。

{ "_id" : ObjectId("5c92b80036de59bd9de0639d") }
{ "_id" : ObjectId("5c92b80436de59bd9de0639e") }
{ "_id" : ObjectId("5c92b80936de59bd9de0639f") }
{ "_id" : ObjectId("5c92b81836de59bd9de063a0") }

まとめ

MongoDBでは、aggregateパイプラインの$projectステージで$toStringを使えばObjectIdを簡単に文字列へ変換でき、逆に$toObjectIdを使えば文字列からObjectIdへ復元できます。APIレスポンスの整形やデータ連携など、型変換が必要な場面でぜひ活用してください。

  1. 【JavaScript】文字列を整数に変換するparseInt()関数の使い方

    JavaScriptで文字列を整数に変換するには、parseInt()関数を使用します。この関数は、引数として渡された文字列の中に数値が含まれている場合、その数値を整数として返します。一方、文字列に数値が一切含まれていない場合は、NaN(Not a Number:数値ではない)を返します。また、parseInt()関数はスペースを受け付けないという特徴があります。スペースを含む文字列が渡された場合は、スペースより前の部分にある数値だけが出力として返されます。parseInt()の構文parseInt(value);この関数は文字列を受け取り、それを整数に変換します。文字列の中に整数が存在しない

  2. GSONライブラリを使ってArrayListをStringに変換する方法【Android開発】

    GSONとはGSONはGoogleが提供するJavaライブラリで、JavaオブジェクトをJSONへ、またJSONをJavaオブジェクトへ相互に変換するために使用されます。内部ではシリアライズ(直列化)とデシリアライズ(非直列化)の仕組みに基づいて動作しています。この記事では、GSONライブラリを使用してArrayListを文字列(String)に変換する方法を、サンプルコード付きの手順で解説します。実装手順ステップ1:新規プロジェクトの作成まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目をすべて入力して