9.Query on Embedded/Nested Documents-官方文档摘录

1.插入案例

db.inventory.insertMany( [
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);

2.匹配内嵌文档

db.inventory.find({size:{h:14,w:21,uom:"cm"}})

9.Query on Embedded/Nested Documents-官方文档摘录_第1张图片

如果顺序不一致,则无法出正确数据

9.Query on Embedded/Nested Documents-官方文档摘录_第2张图片

3 在嵌套字段中查找

db.inventory.find({"size.uom":"in"})

9.Query on Embedded/Nested Documents-官方文档摘录_第3张图片

db.inventory.find({"size.h":{$lt:15}})

9.Query on Embedded/Nested Documents-官方文档摘录_第4张图片

db.inventory.find({
    "size.h":{$lt:15},
    "size.uom":"in",
    status:"D"
    })

9.Query on Embedded/Nested Documents-官方文档摘录_第5张图片

 

 

 

This page provides examples of query operations on embedded/nested documents using thedb.collection.find() method in the mongo shell. The examples on this page use the inventorycollection. To populate the inventory collection, run the following:

Copy
db.inventory.insertMany( [ { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" }, { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" }, { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" }, { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" }, { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" } ]); 

You can run the operation in the web shell below:

Match an Embedded/Nested Document

To specify an equality condition on a field that is an embedded/nested document, use the query filter document  } where  is the document to match.

For example, the following query selects all documents where the field size equals the document h: 14,w: 21, uom: "cm" }:

Copy
db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } ) 

Equality matches on the whole embedded document require an exact match of the specified document, including the field order. For example, the following query does not match any documents in theinventory collection:

Copy
db.inventory.find( { size: { w: 21, h: 14, uom: "cm" } } ) 

Query on Nested Field

To specify a query condition on fields in an embedded/nested document, use the dot notation("field.nestedField").

Specify Equality Match on a Nested Field

The following example selects all documents where the field uom nested in the size field equals "in":

Copy
db.inventory.find( { "size.uom": "in" } ) 

Specify Match using Query Operator

A query filter document can use the query operators to specify conditions in the following form:

{ <field1>: { <operator1>: <value1> }, ... } 

The following query uses the less than operator ($lt) on the field h embedded in the size field:

Copy
db.inventory.find( { "size.h": { $lt: 15 } } ) 

Specify AND Condition¶

The following query selects all documents where the nested field h is less than 15, the nested field uomequals "in", and the status field equals "D":

Copy
db.inventory.find( { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" } ) 

Additional Query Tutorials

For additional query examples, see:

  • Query Documents
  • Query an Array
  • Query an Array of Embedded Documents
←  Query DocumentsQuery an Array →

 

你可能感兴趣的:(9.Query on Embedded/Nested Documents-官方文档摘录)