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 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