MongoDB クエリのネストされたオブジェクト

Shraddha Paghdar 2023年6月20日
MongoDB クエリのネストされたオブジェクト

今日のチュートリアルでは、MongoDB でネストされたオブジェクトをクエリする方法を学びます。

MongoDB でネストされたオブジェクトを照会する

MongoDB は、コレクションから埋め込みまたはネストされたデータを取得したり、埋め込みまたはネストされたドキュメントを検索したりするための読み取り操作を提供します。

db.collection.find() メソッドの助けを借りて、読み取り操作を実行できます。 このメソッドは、埋め込みまたはネストされたコレクションからドキュメントを選択し、カーソルをそのドキュメントに戻します。

構文:

>db.collection.find($filter, $projection)

find() メソッドには、$filter$project の 2つのオプションがあります。以下で簡単に説明します。

  • $filter オプション

    Document タイプのパラメーターを使用して、ドキュメントを除外できます。 さらに、コレクション内のすべてのドキュメントにアクセスする場合は、空のドキュメントまたはこれらのパラメーターなしで使用できます。

  • $project オプション

    この引数を使用すると、指定されたクエリ フィルターを満たす特定のフィールドのみをドキュメントに取得できます。 もちろん、ドキュメントのすべてのフィールドを取得する場合は、このパラメーターを省略できます。

このメソッドは、指定されたクエリ条件に一致するドキュメントへのカーソルを返します。 find() メソッドは、使用時にドキュメントを返すため、使用時にドキュメントへのポインタを返します。

find() メソッドの詳細については こちら を参照してください。 次の例を使用して、概念を理解しましょう。

> db.users.find({address: {country: "United Kingdom"}}).pretty()
> db.users.find({address.country: "United Kingdom"}).pretty()

上記のサンプル コードは、英国出身のユーザーをすべて見つけるためにかなりのテクニックを使用しています。

これら 2つのアプローチの主な違いは、住所の前のチェックではフィールド { 国: ... } のみが含まれ、後者では 住所 が考慮されることです。

address の他のフィールドまたは address にないフィールドは、country フィールドには影響しません。 たとえば、上記のコードを MongoShell で実行すると、次の出力が表示されます。

出力:

{ "_id" : ObjectId("54f612b6029b47909a90cesd"), "email" : "johndoe@example.com", "comment" : "This is the first user in the collection.", "country" : "United Kingdom" }
Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn

関連記事 - MongoDB Query