1 插入例句

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 } ] }
]);

2.只显示需要显示的部分

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

将ID列也省去

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

3.查找内嵌文档

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

4.对数组的查找

db.inventory.find( { status: "A" }, { name: 1, status: 1, instock: { $slice: -1 },_id:0 } )

By default, queries in MongoDB return all fields in matching documents. To limit the amount of data that MongoDB sends to applications, you can include a projection document to specify or restrict fields to return.

This page provides examples of query operations with projection using the db.collection.find()method in the mongo shell. The examples on this page use the inventory collection. To populate theinventory collection, run the following:

Copy
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 } ] }
]);

You can run the operation in the web shell below:

Return All Fields in Matching Documents

If you do not specify a projection document, the db.collection.find() method returns all fields in the matching documents.

The following example returns all fields from all documents in the inventory collection where the statusequals "A":

Copy
db.inventory.find( { status: "A" } )

The operation corresponds to the following SQL statement:

SELECT * from inventory WHERE status = "A"

Return the Specified Fields and the _id Field Only

A projection can explicitly include several fields by setting the <field> to 1 in the projection document. The following operation returns all documents that match the query. In the result set, only the itemstatus and, by default, the _id fields return in the matching documents.

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

The operation corresponds to the following SQL statement:

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

Suppress _id Field

You can remove the _id field from the results by setting its exclusion <field> to 0 in the projection, as in the following example:

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

The operation corresponds to the following SQL statement:

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

Return All But the Excluded Fields

Instead of listing the fields to return in the matching document, you can use a projection to exclude specific fields. The following example which returns all fields except for the status and the instock fields in the matching documents:

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

With the exception of the _id field, you cannot combine inclusion and exclusion statements in projection documents.

Return Specific Fields in Embedded Documents

You can return specific fields in an embedded document. Use the dot notation to refer to the embedded field and set to 1 in the projection document.

The following example returns: the _id field (returned by default), item field, status field, and the uom field in the size document; the uom field remains embedded in the size document.

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

Suppress Specific Fields in Embedded Documents

You can suppress specific fields in an embedded document. Use the dot notation to refer to the embedded field in the projection document and set to 0.

The following example specifies a projection to exclude the uom field inside the size document. All other fields are returned in the matching documents:

Copy
db.inventory.find(
{ status: "A" },
{ "size.uom": 0 }
)

Projection on Embedded Documents in an Array

Use dot notation to project specific fields inside documents embedded in an array.

The following example specifies a projection to return the item field, the status field, and the qty field in the documents embedded in the instock array. The _id field is returned by default.

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

Project Specific Array Elements in the Returned Array

For fields that contain arrays, MongoDB provides the following projection operators: $elemMatch$slice, and $.

The following example uses the $slice projection operator to return just the last element in the instockarray.

Copy
db.inventory.find( { status: "A" }, { name: 1, status: 1, instock: { $slice: -1 } } )

$elemMatch$slice, and $ are the only way to project specific elements to include in the returned array. For instance, you cannot project specific array elements using the array index; e.g. { "instock.0": 1 }projection will not project the array with the first element.

SEE ALSO

Query Documents

12.Project Fields to Return from Query-官方文档摘录的更多相关文章

  1. 8.Query Documents-官方文档摘录

    总结 1 先插入数据 db.inventory.insertMany([ { item: "journal", qty: 25, size: { h: 14, w: 21, uom ...

  2. Cocos Creator 加载和切换场景(官方文档摘录)

    Cocos Creator 加载和切换场景(官方文档摘录) 在 Cocos Creator 中,我们使用场景文件名( 可以不包含扩展名)来索引指代场景.并通过以下接口进行加载和切换操作: cc.dir ...

  3. ng的概念层次(官方文档摘录)

    官方文档是这么说的: You write Angular applications by: composing HTML templates with Angularized markup, writ ...

  4. MongoDB - MongoDB CRUD Operations, Query Documents, Project Fields to Return from Query

    By default, queries in MongoDB return all fields in matching documents. To limit the amount of data ...

  5. Cocos Creator 生命周期回调(官方文档摘录)

    Cocos Creator 为组件脚本提供了生命周期的回调函数.用户通过定义特定的函数回调在特定的时期编写相关 脚本.目前提供给用户的声明周期回调函数有: onLoad start update la ...

  6. Cocos Creator 使用计时器(官方文档摘录)

    在 Cocos Creator 中,我们为组件提供了方便的计时器,这个计时器源自于 Cocos2d-x 中的 cc.Scheduler,我们将它保留在了 Cocos Creator 中并适配了基于组件 ...

  7. angular 模板语法(官方文档摘录)

    https://angular.cn/guide/template-syntax {{}} 和"" 如果嵌套,{{}}里面求完值,""就是原意 <h3&g ...

  8. 20191106 Spring Boot官方文档学习(1-2)

    学习内容相关信息 最新版本:2.2.0 CURRENT GA 官网地址 官方文档地址 单页版文档地址 代码生成网址 2.入门 Spring Boot的主要目标是: 为所有Spring开发提供更快且入门 ...

  9. Spring 4 官方文档学习(十二)View技术

    关键词:view technology.template.template engine.markup.内容较多,按需查用即可. 介绍 Thymeleaf Groovy Markup Template ...

随机推荐

  1. eclipse生成export生成jar详解

    使用eclipse打jar包可能还有很多人不是很了解,今天特意测试整理一番. 打jar包有3种形式 JAR file               JAR Javadoc              ja ...

  2. Unix系统编程()malloc和free的实现

    尽管malloc和free所提供的内存分配接口比之brk和sbrk要容易许多,但在使用时仍然容易犯下各种编程错误. 理解malloc和free的实现,将使我们洞悉产生这些错误的原因以及如何才能避免此类 ...

  3. Android——UI事件的处理机制(基于监听器)

    1.普通内部类(常用) xml <Button android:hint="reset" android:layout_columnWeight="1" ...

  4. eclipse 灵活使用makefile来编译C/C++

    需求: 近期在看<C++ Primer Plus>, 作者在不断优化自己的类.有很多不同的版本号,有非常多的測试函数(main函数),我使用的是eclipse+CDT来编写C++,不可能为 ...

  5. 随机算法 - HNU 13348 Finding Lines

    Finding Lines Problem's Link: http://acm.hnu.cn/online/?action=problem&type=show&id=13348&am ...

  6. Thinkphp3.2 PHPMailer 发送 QQ邮箱 163邮箱

    在进入正题这前先看下网易(163)邮箱的服务器地址和端口号 类型 服务器名称 服务器地址 SSL协议端口号 非SSL协议端口号 收件服务器 POP pop.163.com 995 110 收件服务器 ...

  7. [mysql] Navicat for mysql_导入导出表结构

    应用场景: 当 ① 由于权限控制,远程数据库在外网不能访问 ② 远程数据库连接和查询比较慢,影响工作效率 这时,可以将远程数据库的表结构和已有数据COPY到本地的mysql服务器来进行开发. 只需要将 ...

  8. MapReduce 中的两表 join 几种方案简介

    转自:http://my.oschina.net/leejun2005/blog/95186 MapSideJoin例子:http://my.oschina.net/leejun2005/blog/1 ...

  9. 第二百六十节,Tornado框架-内置模板方法

    Tornado框架-内置模板方法 直接在html文件使用,不需要传值 Tornado默认提供的这些功能其实本质上就是 UIMethod 和 UIModule,也就是Tornado框架定义好的html文 ...

  10. 下列JSP代码:

    下列JSP代码: <html> <body> <% for(int i = 0; i < 10; i++) { //1 } %> </body> ...