MongoDBでObjectIdを除外してコレクションのドキュメントを取得する方法
MongoDBでは、各ドキュメントに自動的に付与される「_id」フィールド(ObjectId)がデフォルトで表示されます。しかし、クエリ結果からこのObjectIdを除外したいケースは少なくありません。その場合は、find()メソッドの第2引数(射影/projection)で _id:0 を指定することで実現できます。
この記事では、実際のコード例を通じて、ObjectIdを含めずにコレクションのドキュメントを取得する手順を解説します。
1. テスト用コレクションの作成
まず、insertOne()メソッドを使ってサンプルデータを登録したコレクションを作成します。
> db.returnDocumentWithoutObjectId.insertOne({"Name":"Carol","Age":25});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce8ba6c78f00858fb12e8fa")
}
> db.returnDocumentWithoutObjectId.insertOne({"Name":"Sam","Age":21});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce8ba6d78f00858fb12e8fb")
}
> db.returnDocumentWithoutObjectId.insertOne({"Name":"John","Age":23});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce8ba6f78f00858fb12e8fc")
}2. 通常のfind()での検索結果
次に、find()メソッドを使ってコレクション内のすべてのドキュメントを表示してみましょう。
> db.returnDocumentWithoutObjectId.find();
実行すると、以下のように各ドキュメントに「_id」フィールドが含まれた状態で出力されます。
{ "_id" : ObjectId("5ce8ba6c78f00858fb12e8fa"), "Name" : "Carol", "Age" : 25 }
{ "_id" : ObjectId("5ce8ba6d78f00858fb12e8fb"), "Name" : "Sam", "Age" : 21 }
{ "_id" : ObjectId("5ce8ba6f78f00858fb12e8fc"), "Name" : "John", "Age" : 23 }3. ObjectIdを除外してドキュメントを取得する
ここが本題です。ObjectIdを除外してドキュメントを取得するには、find()メソッドの第2引数に {_id:0} を指定します。これにより、「_id」フィールドが非表示になります。
> db.returnDocumentWithoutObjectId.find({},{_id:0});実行結果は以下のとおりです。「_id」フィールドが取り除かれ、必要なフィールドだけが返されていることが確認できます。
{ "Name" : "Carol", "Age" : 25 }
{ "Name" : "Sam", "Age" : 21 }
{ "Name" : "John", "Age" : 23 }補足:射影(projection)のポイント
- _id:0 のように値を0にすると、そのフィールドは結果から除外されます。
- 逆に Name:1 のように値を1にすると、そのフィールドのみが表示されます。
- 通常、包含指定(1)と除外指定(0)を混在させることはできませんが、「_id」だけは例外的に両方の指定が可能です。
このように、MongoDBでは射影を活用することで、クエリ結果から不要なフィールドを簡単に取り除くことができます。APIレスポンスなどで内部IDを見せたくない場合などに、ぜひ活用してください。
-
【MongoDB】コレクション内のドキュメントの位置(順位)を取得する方法
MongoDBで、あるドキュメントがコレクション内のどの位置にあるかを調べるには、sort()メソッドとcount()メソッドを組み合わせて使用します。この記事では、実際のコード例を使いながらその手順をわかりやすく解説します。1. サンプルコレクションの作成まず、動作確認用のドキュメントを含むコレクションを作成します。> db.demo47.insertOne({"ClientName":"Adam"}); { "acknowledged" : true, "inse
-
MongoDBコレクション内のすべてのドキュメントに新しいフィールドを追加する方法
MongoDBコレクション内のすべてのドキュメントに新しいフィールドを追加する方法MongoDBで既存のドキュメントに新しいフィールドを追加するには、集計パイプラインの$addFieldsステージを使用します。まずは、サンプルとなるコレクションとドキュメントを作成してみましょう。サンプルコレクションの作成insertOne()メソッドを使用して、ドキュメントを1件ずつ挿入します。> db.demo712.insertOne({Name:John}); { acknowledged : true, insertedId : ObjectId(5ea85f675d33e20ed1