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

MongoDBシェルで特定の値を持つドキュメントを取得する方法をわかりやすく解説

MongoDBシェルを使って特定の値を持つアイテムを取得する方法

MongoDBで特定の値を持つドキュメントを取得したい場合、find()メソッドを使用するのが基本です。この記事では、サンプルコレクションを作成し、実際にfind()メソッドを使って条件に合うデータを抽出する手順を詳しく解説します。

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

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

> db.demo563.insertOne({"Name":"Chris","Age":21,"isMarried":true}){
    "acknowledged" : true, "insertedId" : ObjectId("5e8f546c54b4472ed3e8e878")
}
> db.demo563.insertOne({"Name":"Bob","Age":23,"isMarried":false}){
    "acknowledged" : true, "insertedId" : ObjectId("5e8f547854b4472ed3e8e879")
}
> db.demo563.insertOne({"Name":"Carol","Age":23,"isMarried":true}){
    "acknowledged" : true, "insertedId" : ObjectId("5e8f548b54b4472ed3e8e87a")
}
> db.demo563.insertOne({"Name":"Mike","Age":21,"isMarried":true}){
    "acknowledged" : true, "insertedId" : ObjectId("5e8f549454b4472ed3e8e87b")
}

ここでは、「名前(Name)」「年齢(Age)」「結婚しているかどうか(isMarried)」という3つのフィールドを持つ4件のドキュメントを作成しました。

2. コレクション内の全ドキュメントを表示

挿入したすべてのドキュメントを確認するには、引数なしのfind()メソッドを実行します。

> db.demo563.find();

実行すると、以下のような結果が出力されます。

{ "_id" : ObjectId("5e8f546c54b4472ed3e8e878"), "Name" : "Chris", "Age" : 21, "isMarried" : true }
{ "_id" : ObjectId("5e8f547854b4472ed3e8e879"), "Name" : "Bob", "Age" : 23, "isMarried" : false }
{ "_id" : ObjectId("5e8f548b54b4472ed3e8e87a"), "Name" : "Carol", "Age" : 23, "isMarried" : true }
{ "_id" : ObjectId("5e8f549454b4472ed3e8e87b"), "Name" : "Mike", "Age" : 21, "isMarried" : true }

3. 条件を指定してドキュメントを検索する

次に、特定の値を持つドキュメントだけを取得してみましょう。例として、「年齢(Age)が21歳」のドキュメントを検索します。find()メソッドの第1引数に検索条件を指定します。

> db.demo563.find({Age:21},{isMarried:true,Name:1,Age:1});

このクエリでは、第2引数に射影(projection)を指定しています。これにより、取得するフィールドを絞り込むことができます。

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

{ "_id" : ObjectId("5e8f546c54b4472ed3e8e878"), "Name" : "Chris", "Age" : 21, "isMarried" : true }
{ "_id" : ObjectId("5e8f549454b4472ed3e8e87b"), "Name" : "Mike", "Age" : 21, "isMarried" : true }

ポイント解説

  • 検索条件: find()の第1引数に {Age:21} のように指定すると、該当する値を持つドキュメントのみが返されます。
  • 射影(projection): 第2引数で表示したいフィールドを指定できます。Name:1, Age:1 はNameとAgeフィールドを含めることを意味します。なお、_idはデフォルトで常に表示されます。非表示にしたい場合は _id:0 を指定します。
  • isMarried:trueについて: 今回の例ではisMarriedがtrueのドキュメントのみが該当しましたが、これは検索条件と射影の両方が組み合わさった結果です。

このように、MongoDBシェルではfind()メソッドひとつで柔軟なデータ検索が可能です。条件指定と射影を組み合わせることで、必要なデータだけを効率よく取得できるようになります。

  1. MongoDBドキュメントからemail-idを取得し、print()で表示する方法

    MongoDBドキュメントからemail-idを取得し、print()で表示するには?MongoDBのコレクションに保存されたドキュメントから、特定のフィールド(ここではemail-id)だけを取り出して表示したい場合、forEach()とprint()を組み合わせるのが最も簡単な方法です。この記事では、実際にサンプルコレクションを作成しながら、手順を段階的に解説します。ステップ1:サンプルコレクションの作成まず、insertOne()メソッドを使って、ユーザー名(UserName)とメールアドレス(UserEmailId)を含むドキュメントを3件挿入します。> db.demo690.i

  2. MongoDBで特定フィールドの配列要素数を取得する方法($size演算子の使い方)

    MongoDBでドキュメント内の特定フィールド(配列)に含まれる要素の数をカウントしたい場合は、集計パイプライン(aggregate)と$size演算子を組み合わせるのが最も簡単な方法です。この記事では、実際のコレクションを作成しながら、配列要素数を取得する具体的な手順を解説します。1. サンプルコレクションの作成まず、配列型のフィールド「Subject」を持つドキュメントを含むコレクションを作成します。> db.demo723.insertOne({Subject:[MySQL,MongoDB]}); { acknowledged : true, insertedId