章の概要

この章では、MongoDBクエリで指定されたフィールドの戻り値を設定する方法を紹介します。全てのフィールドデータを返さずに済むように設定します。

テストデータ

inventoryコレクションにいくつかのデータを挿入します

db.inventory.insertMany( [
  { item: "journal", status: "A", size: { h: 14, w: 21, uom: "cm" }, instock: [ { warehouse: "A", qty: 5 } ] },
  { item: "notebook", status: "A",  size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "C", qty: 5 } ] },
  { item: "paper", status: "D", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "A", qty: 60 } ] },
  { item: "planner", status: "D", size: { h: 22.85, w: 30, uom: "cm" }, instock: [ { warehouse: "A", qty: 40 } ] },
  { item: "postcard", status: "A", size: { h: 10, w: 15.25, uom: "cm" }, instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);

フォーマット

{<field>: 1 または 0}

説明:

  • - フィールド名
  • 1 はフィールドを返すことを、0 はフィールドを除外することを示します(つまり、返さないことを示す)

ヒント: 1 と 0 の代わりに true/false を使用することもできます。

指定されたフィールドを返す

find関数の2番目のパラメータを使用して、返すフィールドを設定します。

db.inventory.find( { status: "A" }, { item: 1, status: 1 } )

説明:

  • statusがAを満たすドキュメントがクエリされます。
  • _id、item、およびstatusフィールドを返します。

ヒント: _idフィールドはデフォルトで返されます。

同等なSQL:

SELECT item, status from inventory WHERE status = "A"

指定されたフィールドを除外する

db.inventory.find( { status: "A" }, { status: 0, instock: 0 } )

説明:

  • statusがAを満たすドキュメントがクエリされます。
  • itemとstatusフィールドを除くすべてのデータを返します。

ネストされたドキュメント内の指定されたフィールドを返す

db.inventory.find(
   { status: "A" },
   { item: 1, status: 1, "size.uom": 1 }
)

説明:

  • size.uomは、sizeの下にあるuomフィールドを返すことを示します。