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

MongoDBで_idを指定してレコードを検索する方法をわかりやすく解説

MongoDBで_idを指定してレコードを検索する方法

MongoDBでは、ドキュメントの一意な識別子である _id を使って、特定のレコードを簡単に取得できます。基本となる構文は次のとおりです。

db.yourCollectionName.find({"_id":yourObjectId});

ここで重要なのは、検索条件に指定する _id の値を文字列ではなく ObjectId() でラップするという点です。文字列のまま渡すと型が一致せず、該当するドキュメントが見つかりませんので注意しましょう。

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

まず、insertOne() メソッドを使ってテスト用のコレクションにドキュメントを挿入します。

> db.findRecordByIdDemo.insertOne({"CustomerName":"Larry","CustomerAge":26});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9dc2c875e2eeda1d5c3671")
}
> db.findRecordByIdDemo.insertOne({"CustomerName":"Bob","CustomerAge":20});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9dc2d175e2eeda1d5c3672")
}
> db.findRecordByIdDemo.insertOne({"CustomerName":"Carol","CustomerAge":22});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9dc2d775e2eeda1d5c3673")
}
> db.findRecordByIdDemo.insertOne({"CustomerName":"David","CustomerAge":24});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9dc2e375e2eeda1d5c3674")
}

登録済みドキュメントの確認

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

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

実行すると、次のように4件のドキュメントが出力されます。

{
   "_id" : ObjectId("5c9dc2c875e2eeda1d5c3671"),
   "CustomerName" : "Larry",
   "CustomerAge" : 26
}
{
   "_id" : ObjectId("5c9dc2d175e2eeda1d5c3672"),
   "CustomerName" : "Bob",
   "CustomerAge" : 20
}
{
   "_id" : ObjectId("5c9dc2d775e2eeda1d5c3673"),
   "CustomerName" : "Carol",
   "CustomerAge" : 22
}
{
   "_id" : ObjectId("5c9dc2e375e2eeda1d5c3674"),
   "CustomerName" : "David",
   "CustomerAge" : 24
}

_idを条件にレコードを検索する

それでは、_id を指定して特定のレコードを取得してみましょう。対象のID文字列を ObjectId() に渡し、検索条件として指定します。

> db.findRecordByIdDemo.find({"_id":ObjectId("5c9dc2d175e2eeda1d5c3672")}).pretty();

実行結果は次のとおりです。

{
   "_id" : ObjectId("5c9dc2d175e2eeda1d5c3672"),
   "CustomerName" : "Bob",
   "CustomerAge" : 20
}

このように、指定した ObjectId に一致する「Bob」のドキュメントのみが正しく取得できました。

補足:1件だけ取得したい場合はfindOne()も便利

find() はカーソルを返しますが、最大1件のドキュメントだけを取得したい場合には findOne() を使うと、よりシンプルに記述できます。

db.findRecordByIdDemo.findOne({"_id":ObjectId("5c9dc2d175e2eeda1d5c3672")});

用途に応じて find() と findOne() を使い分けることで、MongoDBでのデータ取得をより効率的に行えます。

  1. MongoDBのサブドキュメントを検索する方法:ドット表記を使ったクエリ実行手順を解説

    MongoDBでは、ネストされたサブドキュメント(埋め込みドキュメント)を検索する際に、ドット表記(dot notation)を使用します。フィールド名とサブフィールド名をドット(.)でつなぐことで、階層構造を持つデータにも簡単にアクセスできます。この記事では、実際にコレクションを作成し、サブドキュメントに対してクエリを実行するまでの手順をサンプルコード付きで解説します。1. コレクションの作成とドキュメントの挿入まず、insertOne()メソッドを使って、サブドキュメントを含むドキュメントをコレクションに挿入します。> db.demo537.insertOne({details:{S

  2. MongoDBで自然順序($natural)を使ってドキュメントを並べ替える方法

    MongoDBで自然順序($natural)によるソートを行う方法MongoDBでは、$natural 演算子を使用することで、ドキュメントが格納されている「自然な順序」のままデータを取得できます。ここでは、実際にサンプルコレクションを作成し、ドキュメントを挿入しながら動作を確認していきましょう。1. コレクションの作成とドキュメントの挿入まず、insertOne() メソッドを使って複数のドキュメントを登録します。> db.demo684.insertOne({Value:10}); { acknowledged : true, insertedId : ObjectI