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

MongoDBでコレクションからドキュメントを取得する方法:find()メソッドの基本と使い方

MongoDBのコレクションからドキュメントを取得するには、find()メソッドを使用します。find()はMongoDBのデータ検索において最も基本的かつ重要なメソッドであり、条件を指定しなければコレクション内のすべてのドキュメントを返します。

find()メソッドの基本構文

基本的な構文は以下の通りです。

db.yourCollectionName.find();

この構文を実行すると、指定したコレクション内のすべてのドキュメントが取得されます。

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

実際の動作を確認するために、まず学生情報を格納するコレクションを作成し、ドキュメントを挿入してみましょう。insertOne()メソッドを使って、5件のドキュメントを登録します。

> db.retrieveAllStudents.insertOne({"StudentId":"STUD101","StudentName":"David","StudentAge":24});
{
    "acknowledged" : true, "insertedId" : ObjectId("5c6bf5cf68174aae23f5ef4e")
}
> db.retrieveAllStudents.insertOne({"StudentId":"STUD102","StudentName":"Carol","StudentAge":22});
{
    "acknowledged" : true, "insertedId" : ObjectId("5c6bf5e968174aae23f5ef4f")
}
> db.retrieveAllStudents.insertOne({"StudentId":"STUD103","StudentName":"Maxwell","StudentAge":25});
{
    "acknowledged" : true, "insertedId" : ObjectId("5c6bf5f768174aae23f5ef50")
}
> db.retrieveAllStudents.insertOne({"StudentId":"STUD104","StudentName":"Bob","StudentAge":23});
{
    "acknowledged" : true, "insertedId" : ObjectId("5c6bf60868174aae23f5ef51")
}
> db.retrieveAllStudents.insertOne({"StudentId":"STUD105","StudentName":"Sam","StudentAge":27});
{
    "acknowledged" : true, "insertedId" : ObjectId("5c6bf61b68174aae23f5ef52")
}

すべてのドキュメントを取得する

先ほどのfind()の構文を使って、コレクション内の全ドキュメントを取得してみましょう。クエリは次のようになります。

> db.retrieveAllStudents.find();

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

{ "_id" : ObjectId("5c6bf5cf68174aae23f5ef4e"), "StudentId" : "STUD-101", "StudentName" :
    "David", "StudentAge" : 24 }
{ "_id" : ObjectId("5c6bf5e968174aae23f5ef4f"), "StudentId" : "STUD-102", "StudentName" :
    "Carol", "StudentAge" : 22 }
{ "_id" : ObjectId("5c6bf5f768174aae23f5ef50"), "StudentId" : "STUD-103", "StudentName" :
    "Maxwell", "StudentAge" : 25 }
{ "_id" : ObjectId("5c6bf60868174aae23f5ef51"), "StudentId" : "STUD-104", "StudentName" :
    "Bob", "StudentAge" : 23 }
{ "_id" : ObjectId("5c6bf61b68174aae23f5ef52"), "StudentId" : "STUD-105", "StudentName" :
    "Sam", "StudentAge" : 27 }

pretty()メソッドで見やすく整形表示する

デフォルトの出力では、各ドキュメントが1行にまとめられて表示されるため、フィールドが多い場合は読みにくくなります。そこで、pretty()メソッドをfind()と組み合わせると、インデント付きの整形された出力が得られます。

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

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

{
    "_id" : ObjectId("5c6bf5cf68174aae23f5ef4e"),
    "StudentId" : "STUD-101",
    "StudentName" : "David",
    "StudentAge" : 24
}
{
    "_id" : ObjectId("5c6bf5e968174aae23f5ef4f"),
    "StudentId" : "STUD-102",
    "StudentName" : "Carol",
    "StudentAge" : 22
}
{
    "_id" : ObjectId("5c6bf5f768174aae23f5ef50"),
    "StudentId" : "STUD-103",
    "StudentName" : "Maxwell",
    "StudentAge" : 25
}
{
    "_id" : ObjectId("5c6bf60868174aae23f5ef51"),
    "StudentId" : "STUD-104",
    "StudentName" : "Bob",
    "StudentAge" : 23
}
{
    "_id" : ObjectId("5c6bf61b68174aae23f5ef52"),
    "StudentId" : "STUD-105",
    "StudentName" : "Sam",
    "StudentAge" : 27
}

条件を指定して特定のドキュメントを取得する

find()メソッドには引数として検索条件(クエリドキュメント)を渡すことができます。これにより、条件に一致するドキュメントだけを取得できます。

例えば、ここでは「StudentName」が「Maxwell」という値を持つドキュメントを検索してみましょう。クエリは以下のようになります。

> db.retrieveAllStudents.find({"StudentName":"Maxwell"}).pretty();

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

{
    "_id" : ObjectId("5c6bf5f768174aae23f5ef50"),
    "StudentId" : "STUD-103",
    "StudentName" : "Maxwell",
    "StudentAge" : 25
}

まとめ

MongoDBでコレクションからドキュメントを取得する際のポイントを整理すると、以下のようになります。

  • find():引数なしで呼び出すと、コレクション内のすべてのドキュメントを取得できる。
  • pretty():find()と組み合わせることで、インデント付きの読みやすい形式で結果を表示できる。
  • 条件指定:find()の第1引数にクエリドキュメントを渡すことで、特定の条件に一致するドキュメントのみを抽出できる。

なお、条件に一致する最初の1件だけを取得したい場合は、findOne()メソッドを使用すると便利です。また、実際のアプリケーション開発では、大量のデータを扱うことが多いため、limit()やskip()などのカーソルメソッドと組み合わせて使うことも覚えておくと良いでしょう。

  1. MongoDBコレクションから重複を削除する方法|unique制約の使い方を解説

    MongoDBコレクションから重複を削除する方法MongoDBのコレクションに重複データが登録されるのを防ぎたい場合は、ユニーク制約(unique: true)を設定するのが最も基本的かつ確実な方法です。対象フィールドにユニークインデックスを作成しておくことで、同じ値を持つドキュメントの挿入が自動的に拒否され、コレクション内に重複が存在しない状態を維持できます。基本構文以下のように、コレクション名とフィールド名を指定してユニークインデックスを作成します。「dropDups: true」を付けることで、インデックス作成時点で既に存在していた重複ドキュメントも削除され、各グループの最初の1件のみが

  2. Javaを使ってMongoDBコレクションからすべてのドキュメントを取得する方法

    MongoDBでは、find()メソッドを使用することで、既存のコレクションからドキュメントを取得できます。この記事では、MongoDBシェルでの基本操作と、Javaプログラムからすべてのドキュメントを取得する手順について詳しく解説します。MongoDBシェルでの構文db.coll.find()各要素の意味は以下のとおりです。db:対象となるデータベースcoll:ドキュメントを取得したいコレクションの名前シェルでの実行例ここでは、MongoDBデータベース内に「students」というコレクションがあり、次のドキュメントが登録されているものとします。{name:"Ram",