zoukankan      html  css  js  c++  java
  • 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"}})

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

    3 在嵌套字段中查找

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

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

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

    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:

    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 <field>: <value> } where <value> 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" }:

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

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

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

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

    Specify Match using Query Operator

    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:

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

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

    Additional Query Tutorials

    For additional query examples, see:

  • 相关阅读:
    学习Python的体会 (1)
    李敖的管理经
    《inside the c++ object model》读书笔记 之五 构造,解构,拷贝语意学
    《inside the c++ object model》读书笔记 之四 Function 语意学
    《inside the c++ object model》读书笔记 之三:Data语意学
    《inside the c++ object model》读书笔记 之六 执行期语意学
    排序算法插入排序/冒泡排序
    《inside the c++ object model》读书笔记 之七 站在对象模型的尖端
    《inside the c++ object model》读书笔记 之二:构造函数
    《inside the c++ object model》读书笔记 之一:对象
  • 原文地址:https://www.cnblogs.com/olinux/p/7239653.html
Copyright © 2011-2022 走看看