12.Project Fields to Return from Query-官方文档摘录
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:
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":
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 item, status and, by default, the _id fields return in the matching documents.
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:
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:
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.
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:
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.
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.
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
12.Project Fields to Return from Query-官方文档摘录的更多相关文章
- 8.Query Documents-官方文档摘录
总结 1 先插入数据 db.inventory.insertMany([ { item: "journal", qty: 25, size: { h: 14, w: 21, uom ...
- Cocos Creator 加载和切换场景(官方文档摘录)
Cocos Creator 加载和切换场景(官方文档摘录) 在 Cocos Creator 中,我们使用场景文件名( 可以不包含扩展名)来索引指代场景.并通过以下接口进行加载和切换操作: cc.dir ...
- ng的概念层次(官方文档摘录)
官方文档是这么说的: You write Angular applications by: composing HTML templates with Angularized markup, writ ...
- 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 ...
- Cocos Creator 生命周期回调(官方文档摘录)
Cocos Creator 为组件脚本提供了生命周期的回调函数.用户通过定义特定的函数回调在特定的时期编写相关 脚本.目前提供给用户的声明周期回调函数有: onLoad start update la ...
- Cocos Creator 使用计时器(官方文档摘录)
在 Cocos Creator 中,我们为组件提供了方便的计时器,这个计时器源自于 Cocos2d-x 中的 cc.Scheduler,我们将它保留在了 Cocos Creator 中并适配了基于组件 ...
- angular 模板语法(官方文档摘录)
https://angular.cn/guide/template-syntax {{}} 和"" 如果嵌套,{{}}里面求完值,""就是原意 <h3&g ...
- 20191106 Spring Boot官方文档学习(1-2)
学习内容相关信息 最新版本:2.2.0 CURRENT GA 官网地址 官方文档地址 单页版文档地址 代码生成网址 2.入门 Spring Boot的主要目标是: 为所有Spring开发提供更快且入门 ...
- Spring 4 官方文档学习(十二)View技术
关键词:view technology.template.template engine.markup.内容较多,按需查用即可. 介绍 Thymeleaf Groovy Markup Template ...
随机推荐
- java ssm框架入门(三)正式项目的web.xml配置
一个正规的上线的web.xml的配置. <?xml version="1.0" encoding="UTF-8"?> <web-app id= ...
- linux进程同步机制_转
转自:Linux进程同步机制 具体应用可参考:线程同步 IPC之信号量 为了能够有效的控制多个进程之间的沟通过程,保证沟通过程的有序和和谐,OS必须提供一 定的同步机制保证进程之间不会自说 ...
- oracle查询数据库最大连接数等信息
.当前的数据库连接数 select count(*) from v$process where program='ORACLE.EXE(SHAD)'; .数据库允许的最大连接数 select valu ...
- asp.net treeview 总结
网上关于Treeview的代码虽然多 但是都是很乱 实用性和正确性也不是很好 只好自己写一套了,时间比较紧张 性能可能还需调整 以用户组织的一个实际例子来讲诉Treeview的用法吧 组织表结构: 用 ...
- Btrace的使用方法
本文基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版> 写在前面: Btrace有很多用法,比如说性能监视,连接泄露,内存泄漏,多线程竞争,而本文说的只是最基本的应用打印调用 ...
- PHP高并发的解决方案
这几天面试,被问到这样一个问题:如何解决大流量的高并发问题.起初不知所措,在查阅相关资料,以及网上大牛们的解答之后,总结出以下几点: 1.服务器,如果同时访问量超过10W的话,需要采用专用服务器来承载 ...
- CSS3制作文字半透明倒影效果
效果如图.Ps.背景线条是背景图勒,和本文效果无关... html代码如下: <div class="content"> <h3 title="专业 ...
- opencv 摄像头人脸检测
PYTHON ubuntu16.04 默认安装的Python版本2.7.12,当用pip install opencv-python 安装了opencv for python 3.3.0.10后,运行 ...
- getRequestDispatcher 和sendRedirect区别及路径问题
getRequestDispatcher 和sendRedirect区别 getRequestDispatcher是服务器内部跳转,地址栏信息不变,只能跳转到web应用内的网页. sendRedi ...
- RAII in C++
在C++中,如果对一个块直接分配资源,而且在释放资源之前发生异常,那么这些资源在栈展开(注1)期间将不会得到释放.例如,一个块可以通过调用new动态分配内存,如果该块因异常退出,编译器将不会删除该指针 ...