Mongodb 控制查询返回字段

使用关系型数据库时,用户在select命令后添加字段名称控制返回字段。mongodb中也支持对查询返回字段的控制。默认返回文档的所有字段。为了限制返回数据量,提高网络传输速率。用户可以通过投射(projection)来指定返回字段或在返回结果中排除一些字段。

构建测试集合

与本系列其他文章一样,首先构建测试集合。插入测试集合的文档,包含字符串类型的字段item和status, 嵌套文档类型字段size,文档数组类型字段instock.

//删掉已有集合
//db.inventory.drop()
//创建新的集合
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 } ] }
]);

返回匹配文档的所有字段

当用户并未向mongodb查询语句指定任何投射规则时,默认返回所有字段。

下面的语句返回字段status是A的所有文档字段

db.inventory.find({status: 'A'})

返回指定字段和_id字段

通过添加投射规则,用户可以显示的指定字段的返回规则。在投射规则中,当字段名称后面指定为1时,该字段会被返回。当向字段指定为0时,该字段不会返回。_id字段,默认返回。

投射规则的语法如下

db.collection.find({ //定义查询条件<field_name>: <value>,...},{ //定义投射规则,设定字段是否返回<field_name>: <0 or 1>,...}
)

下面语句中,返回item、status和_id字段

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

隐藏_id字段

_id字段默认是显示的,需要隐藏字段时,需要显示的在投射规则中添加_id:0

如只返回item和status字段

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

在此查询语句中,定义了三个投射规则,item, status两个字段显示,_id字段隐藏。Mongodb在使用中规定,除了_id字段外,定义投射规则时,不能同时定义字段显示和隐藏。如用户只能定义item和status字段全部显示的{item: 1, status: 1}。不能定义item显示,status字段隐藏的规则{item: 1, status: 0}。而用户只能控制_id字段的隐藏,如{item: 1, status: 1, _id: 0}

隐藏某些字段

如前面描述,为字段名称指定0值时,隐藏该字段。该字段在查询结果中不会返回。

如查询中不返回status和instock字段

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

控制内嵌文档字段的显示和隐藏

与查询过滤文档一直,用户可以使用点操作符,构建嵌套字段路径,指定嵌套文档中字段的显示和隐藏。如下面的语句中,显示size文档中的uom字段

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

同样,不使用点号,写成内嵌文档的方式,也是支持的。

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

而隐藏某些字段,只要将投射中的1改成0集合。

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

控制文档数组中字段的显示和隐藏

与嵌套文档操作类似,使用点操作符也可以控制文档数组中字段的显示和隐藏。

如下面的语句中,返回字段item, status, 和数组instock中文档的字段qty

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

除了控制文档字段显示以外, 使用投影,借助投影操作符,还可以控制数组元素的返回。详见后续文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/639911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git学习笔记(第7章):IDEA实现Git操作(VSCode)

目录 7.1 配置忽略文件 7.2 初始化本地库 7.3 添加暂存区、提交本地库 7.4 修改文件 补充&#xff1a;工具栏简介 7.1 配置忽略文件 问题引入 在版本控制系统中&#xff0c;有些文件或目录是不需要纳入版本管理的&#xff0c;比如编译产生的临时文件、日志文件、缓存文件等…

项目篇:基于UDP通信模型的网络聊天室

思维导图 基于UDP通信模型的网络聊天室 消息分类及数据包结构 服务器端 #include <head.h> #define SER_PORT 8888 #define SER_IP "192.168.232.133" typedef struct mb {struct sockaddr_in cin;char name[20];struct mb *next; }*member; //群发消息 int …

计算机网络复试

第1章 概述 时延&#xff1a;发送(传输)时延传播时延 链路中每多一个路由器&#xff0c;就增加一个分组的发送时延 第2章 物理层 2.4 编码与调制->编码(基带调制)->曼彻斯特编码 ->带通调制->混合调制->正交振幅调制QAM 信道极限容量 奈氏准则 无噪声最大速…

【window】Windows11:该文件没有与之关联的应用来执行该操作

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff1a;人工智能 之前win10升级win11后&#xff0c;受不了桌面软件图标的的小箭头&#xff0c;所以弄掉了&#xff0c;但是随之而来产…

Linux修改文件名常见的三种方式

在Linux系统中&#xff0c;有多种方式可以修改文件名。以下是其中的三种常见方式&#xff1a; 1. List item 使用mv命令&#xff1a; mv oldfilename newfilename例如&#xff0c;要将文件"oldfile.txt"重命名为"newfile.txt"&#xff0c;可以使用以下命…

9个好习惯教会你设计商业模式的电商干货,真心分享丨运营逻辑

9个好习惯教会你设计商业模式的电商干货&#xff0c;真心分享丨运营逻辑 文丨微三云营销总监胡佳东&#xff0c;点击上方“关注”&#xff0c;为你分享市场商业模式电商干货。 - 最近&#xff0c;有很多新认识的朋友&#xff0c;都在询问我最近市场上&#xff0c;有什么好的…

定类变量的频率分析(SPSS

目录 1.导入数据&#xff1a;2.频率分析&#xff1a;3.结果分析4.表格导出为excel小结&#xff1a; 1.导入数据&#xff1a; 直接把表格拖入spss 然后点确定 下面会有变量视图&#xff0c;查看各个指标的类型和属性&#xff1a; 2.频率分析&#xff1a; 点击频率分析 选择…

json-server的基础使用

本篇文章与另一篇文章有关系axios的基本使用&#xff0c;大家可以看看这篇文章 json-server 是什么? 用来快速搭建模拟的 REST API 的工具包 可以30秒内快速为我们搭建一个假的基于 REST API的服务 我们要如何使用呢&#xff1f; 1.先安装 //全局安装 npm i -g json-server …

伪原创文章生成器软件免费使用的方法

写文章不仅消耗时间&#xff0c;而且还容易出现写不出内容的问题&#xff0c;随着技术的发展&#xff0c;越来越多的人开始不再亲历亲为的去写文章了&#xff0c;而是用起了伪原创文章生成器软件&#xff0c;对于还不了解自动生成文章软件的人&#xff0c;可不要小瞧这个它了&a…

JOSEF约瑟 零序电流继电器 JL-8D/2X122A4(S) 0-30AAC 220VDC

系列型号 JL-8D/3X1定时限电流继电器&#xff1b;JL-8D/3X111A2定时限电流继电器&#xff1b; JL-8D/3X121A2定时限电流继电器&#xff1b;JL-8D/3X211A2定时限电流继电器&#xff1b; JL-8D/3X221A2定时限电流继电器&#xff1b;JL-8D/3X2定时限电流继电器&#xff1b; JL-8D/…

[小程序]Http网络请求

一、数据请求限制 出于安全性(bushi)考虑&#xff0c;小程序请求的数据接口必须具备以下两个条件&#xff1a; ①只能请求Https类型 ②必须将接口域名添加到信任列表中 1.配置request合法域名 配置步骤如下&#xff1a;小程序管理后台->开发->开发设置->服务器域名-&g…

golang any 之中的类型及 interface 接口

在 golang 之中 any 类型&#xff0c;从字面意思上看是任意类型&#xff0c;这很类似我们在 C#、C 之中的任意指针类型 void*&#xff08;原生&#xff09;&#xff0c;C# 之中诡异的 object。 any 是一个接口类型&#xff0c;其语法声明为&#xff1a; // any is an alias fo…

JavaScript 基础语法

文章目录 逻辑控制语句直接从页面输出数据类型相加循环语句测试语法 逻辑控制语句 function print(){//注意常量尽量全部使用大写const SEASON 3 if(SEASON>1&&SEASON<3){console.log(春天来了)}else if(SEASON>4&&SEASON<6){console.log(夏天来…

幻兽帕鲁专用服务器

随着幻兽帕鲁这款游戏的热度持续升温&#xff0c;我们遍寻全网&#xff0c;带给各位玩家一个全新的、高品质的游戏体验——莱卡云服务器。有幻兽帕鲁的热衷者们无需再为了服务器的选取困扰&#xff0c;因为我们可以肯定地说&#xff1a;选择莱卡云&#xff0c;你不会失望。 首先…

【leetcode100-044到050】【二叉树】七题合集

昨天光写题忘写文章了&#xff0c;合并到今天一起写了///一共七个题/// 【二叉搜索树中第k小元素】 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 个最小元素&#xff08;从 1 开始计数&#xff09;。 思路&#xf…

java SSM政府采购管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM政府采购管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代 码和数据库&#xff0c;系统主要采…

飞书+ChatGPT+cpolar搭建企业智能AI助手并实现无公网ip远程访问

文章目录 推荐 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂…

C语言第五弹---分支语句(上)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 分支语句 1、if语句1.1、if1.2、 else1.3、 分支中包含多条语句1.4、嵌套if1.5、 悬空else问题 2、关系操作符3、 条件操作符总结 C语言是结构化的程序设计语言&…

第04章_IDEA的安装与使用(下)(IDEA断点调试,IDEA常用插件)

文章目录 第04章_IDEA的安装与使用&#xff08;下&#xff09;8. 快捷键的使用8.1 常用快捷键8.2 查看快捷键1、已知快捷键操作名&#xff0c;未知快捷键2、已知快捷键&#xff0c;不知道对应的操作名 8.3 自定义快捷键8.4 使用其它平台快捷键 9. IDEA断点调试(Debug)9.1 为什么…

如何设计WIndows系统下的单例进程程序?

1. 如何设计WIndows系统下的单例进程程序&#xff1f; 为了设计一个Windows系统下的单例进程程序&#xff0c;你可以遵循以下步骤&#xff1a; 首先&#xff0c;确定你的应用程序只能运行一个实例。这可以通过使用互斥量&#xff08;Mutex&#xff09;来实现。互斥量是一种同…