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

MongoDBでObjectIdを文字列に変換する方法|$toString演算子の使い方

MongoDBでObjectIdを文字列に変換するには

MongoDBでは、集計パイプライン(aggregate)の中で $toString 演算子を使用することで、ObjectIdを文字列値に変換できます。ここでは、実際にサンプルコレクションを作成し、ObjectIdを文字列へ変換する手順を順番に見ていきましょう。

1. サンプルコレクションを作成する

まずは、変換動作を確認するためのコレクションとドキュメントを作成します。insertOne()メソッドを使って複数のドキュメントを挿入します。

> 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")
}

挿入が完了すると、各ドキュメントの _id フィールドに自動的に ObjectId が割り当てられていることがわかります。

2. find()でドキュメントを確認する

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 型として保存されていることが確認できます。

3. aggregateの$toStringでObjectIdを文字列に変換する

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

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

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

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

_id が「ObjectId("...")」という形式から、引用符で囲まれた単純な文字列型に変換されていることが確認できます。

まとめ

  • ObjectIdを文字列に変換するには、aggregateパイプライン内で $toString を使います。
  • $project ステージと組み合わせることで、_id のみを出力用に文字列化できます。
  • $toString は MongoDB 4.0 以降で利用可能な演算子です。
  • API連携やJSONレスポンスの生成など、ObjectIdをそのまま扱えない場面で特に役立ちます。
  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