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

MongoDBでコレクション内の全ドキュメントのIDを取得する方法

MongoDBでコレクション内の全ドキュメントのIDを取得する方法

MongoDBでコレクションに含まれるすべてのドキュメントのID(_id)だけを取り出したい場合は、find()メソッドと射影(projection)を組み合わせるのが基本です。この記事では、実際のコマンド例を使いながら手順をわかりやすく解説します。

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

まずは、テスト用のコレクション「demo169」を作成し、insertOne()メソッドでドキュメントを挿入していきます。

> db.demo169.insertOne({"StudentName":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e36975e9e4f06af551997d7")
}
> db.demo169.insertOne({"StudentName":"Bob"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3697629e4f06af551997d8")
}
> db.demo169.insertOne({"StudentName":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3697679e4f06af551997d9")
}

挿入されたドキュメントの確認

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

> db.demo169.find();

実行すると、以下のような出力が得られます。

{ "_id" : ObjectId("5e36975e9e4f06af551997d7"), "StudentName" : "Chris" }
{ "_id" : ObjectId("5e3697629e4f06af551997d8"), "StudentName" : "Bob" }
{ "_id" : ObjectId("5e3697679e4f06af551997d9"), "StudentName" : "David" }

すべてのドキュメントの_idのみを取得するクエリ

コレクション内の全ドキュメントからIDだけを取り出すには、find()の第2引数で射影を指定し、不要なフィールド(ここではStudentName)を除外します。

> var iterator=db.demo169.find({},{"StudentName":0});

変数iteratorにはカーソルが格納されているので、変数名を入力して結果を表示しましょう。

> iterator;

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

{ "_id" : ObjectId("5e36975e9e4f06af551997d7") }
{ "_id" : ObjectId("5e3697629e4f06af551997d8") }
{ "_id" : ObjectId("5e3697679e4f06af551997d9") }

補足:射影指定時の注意点

射影では、「含めたいフィールド: 1」という形式か「除外したいフィールド: 0」という形式のどちらかを使用できます。ただし、_idフィールドは特別扱いされており、明示的に0を指定しない限り常に結果に含まれる点に注意してください。そのため、上記のように_id以外のフィールドを除外するだけで、自然に_idだけを抽出できます。

  1. MongoDBコレクション内のすべてのドキュメントに新しいフィールドを追加する方法

    MongoDBコレクション内のすべてのドキュメントに新しいフィールドを追加する方法MongoDBで既存のドキュメントに新しいフィールドを追加するには、集計パイプラインの$addFieldsステージを使用します。まずは、サンプルとなるコレクションとドキュメントを作成してみましょう。サンプルコレクションの作成insertOne()メソッドを使用して、ドキュメントを1件ずつ挿入します。> db.demo712.insertOne({Name:John}); { acknowledged : true, insertedId : ObjectId(5ea85f675d33e20ed1

  2. MongoDBで$in演算子を使って特定の複数ドキュメントを取得する方法

    MongoDBで特定の複数のドキュメントを一度に取得したい場合、$in 演算子を使用します。$in は、指定した配列内のいずれかの値に一致するドキュメントだけを抽出できる便利な比較演算子です。この記事では、実際にコレクションを作成し、$in を使って特定の複数ドキュメントを取得する手順を順番に解説します。1. コレクションの作成とドキュメントの挿入まず、insertOne() メソッドを使ってサンプル用のコレクション「demo593」にドキュメントを挿入します。> db.demo593.insertOne({id:1,Name:Chris});{ acknowledged : tr