MongoDBでID(_id)を指定してドキュメントを検索する方法
MongoDBで特定のID(_id)を指定してドキュメントを検索するには、find()メソッドを使用します。基本的な構文は以下のとおりです。
db.findByIdDemo.find({"_id" : yourObjectId});ここで重要なポイントは、検索条件に渡すIDは文字列ではなく、ObjectId()でラップしたオブジェクトである必要があるという点です。文字列のまま渡すと、意図したドキュメントが見つかりません。
サンプルコレクションの作成
構文の動作を確認するために、まずドキュメントを含むコレクションを作成しましょう。以下ではinsertOne()メソッドを使って3件のドキュメントを挿入しています。
> db.findByIdDemo.insertOne({"Value":10});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e07158925ddae1f53b621fc")
}
> db.findByIdDemo.insertOne({"Value":500});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e07158c25ddae1f53b621fd")
}
> db.findByIdDemo.insertOne({"Value":1000});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e07159125ddae1f53b621fe")
}コレクション内の全ドキュメントを表示する
find()メソッドに条件を指定しないで実行すると、コレクション内のすべてのドキュメントを取得できます。
> db.findByIdDemo.find();
実行結果は以下のようになります。
{ "_id" : ObjectId("5e07158925ddae1f53b621fc"), "Value" : 10 }
{ "_id" : ObjectId("5e07158c25ddae1f53b621fd"), "Value" : 500 }
{ "_id" : ObjectId("5e07159125ddae1f53b621fe"), "Value" : 1000 }IDを指定してドキュメントを検索する
次に、特定の_idを条件としてドキュメントを検索するクエリを見てみましょう。ObjectId()コンストラクタに対象のID文字列を渡して指定します。
> db.findByIdDemo.find({"_id" :ObjectId("5e07158c25ddae1f53b621fd")});このクエリを実行すると、該当するドキュメントのみが出力されます。
{ "_id" : ObjectId("5e07158c25ddae1f53b621fd"), "Value" : 500 }補足:findOne()メソッドとの違い
同様の目的にはfindOne()メソッドも利用できます。findOne()は条件に一致した最初の1件だけをドキュメント形式で返すため、単一ドキュメントの取得に適しています。一方、find()はカーソルを返し、一致するすべてのドキュメントを扱えます。用途に応じて使い分けるとよいでしょう。
-
MongoDBで「フィールドが存在しない」条件を使ってドキュメントを検索する方法
MongoDBでは、$exists 演算子に false を指定することで、「特定のフィールドを持たないドキュメント」を簡単に検索できます。データの整合性チェックや、未入力項目の洗い出しなどに役立つ便利なテクニックです。基本構文フィールドが存在しないドキュメントを検索する場合の基本構文は以下のとおりです。db.yourCollectionName.find({ yourFieldName : { $exists : false } }).pretty();サンプルコレクションの作成実際に動きを確認するために、サンプルのコレクションを作成してみましょう。まずはドキュメントを挿入します。>
-
MongoDBでコンソールをクリアする2つの方法|ショートカット「Ctrl + L」とコマンド「cls」の使い方
MongoDBのシェル(mongo / mongosh)を使っていると、実行したクエリや結果がどんどん積み重なり、画面が見づらくなることがあります。そんなときに便利なのがコンソールのクリア機能です。MongoDBでは、以下の2つの方法でコンソールをクリアできます。 方法1:キーボードショートカット「Ctrl + L」を使う 最も手軽なのが、キーボードショートカットを使う方法です。次のキーを押すだけで、即座にコンソールをクリアできます。 Ctrl + L このキーを押すと、それまで表示されていたログや実行結果がすべて消え、まっさらな状態になります。Linuxのターミナルなどと同じ操作感なので、