MongoDB CRUD操作:内嵌文档数组查询
MongoDB 内嵌文档数组查询
文章目录
- MongoDB 内嵌文档数组查询
- 查询数组内嵌文档
- 为文档数组中的字段指定查询条件
- 指定文档数组内嵌文档字段的查询条件
- 使用数组索引查询内嵌文档的字段
- 为文档数组指定多个条件
- 单个内嵌文档满足内嵌字段的多个查询条件
- 符合标准的元素组合
- 使用 MongoDB Atlas 查询文档数组
可以使用下面几种方法查询MongoDB中的嵌入文档:
- 编程语言的驱动程序,比如:Java、Python灯。
- MongoDB Atlas UI。
- MongoDB Compass。
- 其他第三方工具。
下面的示例使用mongosh的db.collection.find()方法对内嵌/嵌套文档进行查询,如果使用其他编程语言或驱动,写法会有不同。
首先,使用下面的语句创建inventory数据集:
db.inventory.insertMany( [{ item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },{ item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },{ item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] },{ item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] },{ item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
查询数组内嵌文档
下面的示例查询instock数组中元素与指定文档匹配的文档:
db.inventory.find( { "instock": { warehouse: "A", qty: 5 } } )
整个内嵌文档的等价匹配要求与指定文档完全匹配,包括字段顺序。例如,下面的查询与集合中所有文档都不匹配:
db.inventory.find( { "instock": { qty: 5, warehouse: "A" } } )
为文档数组中的字段指定查询条件
指定文档数组内嵌文档字段的查询条件
如果不知道数组中内嵌文档的索引位置,可将数组字段名称与点(.)和内嵌文档中的字段名称连接起来。
下面的示例查询instock数组中至少有一个内嵌文档包含qty字段(其值小于或等于20)的文档:
db.inventory.find( { 'instock.qty': { $lte: 20 } } )
使用数组索引查询内嵌文档的字段
可以使用点号表示法,指定文档中数组指定索引位置的字段的查询条件,数组的索引从零开始,使用点表示法查询时,字段和索引必须位于引号内。
db.inventory.find( { 'instock.0.qty': { $lte: 20 } } )
为文档数组指定多个条件
对内嵌文档数组的多个字段指定条件时,可以指定单个、多个或全部文档满足条件。
单个内嵌文档满足内嵌字段的多个查询条件
使用$elemMatch操作符可以在内嵌文档数组上指定多个条件,这样至少有一个内嵌文档满足条件。
下面的例子查询instock数组中至少有一个内嵌文档同时包含qty字段等于5和warehouse字段等于A的文档:
db.inventory.find( { "instock": { $elemMatch: { qty: 5, warehouse: "A" } } } )
下面的列子查询instock数组中至少有一个内嵌文档包含qty大于10且小于或等于20的文档:
db.inventory.find( { "instock": { $elemMatch: { qty: { $gt: 10, $lte: 20 } } } } )
符合标准的元素组合
如果数组字段上的复合查询条件不使用 $elemMatch 运算符,则查询将选择其数组包含满足条件的任意元素组合的文档。
例如,以下查询匹配 instock 数组中嵌套的任何文档的 qty 字段大于 10 且数组中的任何文档(但不一定是相同的嵌入文档)的 qty 字段小于或等于 20 的文档:
db.inventory.find( { "instock.qty": { $gt: 10, $lte: 20 } } )
以下示例查询 instock 数组中至少有一个包含等于 5 的字段 qty 的嵌入文档和至少一个包含等于 A 的字段仓库的嵌入文档(但不一定是相同的嵌入文档)的文档:
db.inventory.find( { "instock.qty": 5, "instock.warehouse": "A" } )
使用 MongoDB Atlas 查询文档数组
相关文章:
MongoDB CRUD操作:内嵌文档数组查询
MongoDB 内嵌文档数组查询 文章目录 MongoDB 内嵌文档数组查询查询数组内嵌文档为文档数组中的字段指定查询条件指定文档数组内嵌文档字段的查询条件使用数组索引查询内嵌文档的字段 为文档数组指定多个条件单个内嵌文档满足内嵌字段的多个查询条件符合标准的元素组合 使用 Mon…...
【C++】每日一题 50 Pow(x,n)
实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,x^n )。 当需要计算x的n次幂时,可以使用递归或者迭代的方式来实现。 #include <iostream>double myPow(double x, int n) {if (n 0) {return 1.0;} else if (…...
HG/T 6088-2022 透水道路用涂料检测
透水混凝土是指由水泥、矿物掺合料、骨料、外加剂及水等主要材料经拌合形成的,具有透水功能的混凝土材料,用于其表面的涂料称为透水道路用涂料。 HG/T 6088-2022透水道路用涂料检测项目: 测试指标 测试方法 有害物质限量 GB 38468 在容器…...
linux定时清理docker日志脚本
Linux 定时清理 Docker 日志的脚本与配置指南 在使用 Docker 容器化应用程序时,日志文件可能会迅速增长,占用大量磁盘空间。为了保持系统的稳定性和高效运行,定期清理 Docker 日志文件是必要的。本文将介绍如何编写一个 Linux 脚本来清理 Docker 日志文件,并通过 cron 定时…...
ROS学习笔记(16):夹缝循迹
0.前言 在笔记的第15期对巡墙驾驶的原理进行了简单讲解,而这期我们来讲一下夹缝循迹,也常被叫follow the gap,也更新一些概念。 1.探索式路径规划与避障 1.概念 无预先建图的路径规划叫探索式路径规划,例如巡墙循迹和夹缝循迹&…...
【MySQL精通之路】SQL语句(3)-锁和事务语句
目录 1.START TRANSACTION、COMMIT和ROLLBACK语句 2.无法回滚的语句 3.导致隐含COMMIT的语句 4.SAVEPOINT、ROLLBACK TO SAVEPOINT和RELEASE SAVEPOINT语句 5.LOCK INSTANCE FOR BACKUP和UNLOCK INSTANCE语句 6.LOCK TABLE和UNLOCK TABLES语句 6.1 表锁获取 6.2 表锁释放…...
211大学计算机专业不考408,新增的交叉专业却考408!南京农业大学计算机考研考情分析!
南京农业大学信息科技学院可追溯至1981年成立的计算中心和1985年筹建的农业图书情报专业。1987年设立了农业图书情报系,1993 年农业图书情报系更名为信息管理系,本科专业名称也于1999年更名为信息管理与信息系统专业。1994年计算中心开始招收计算机应用专…...
利用java8 的 CompletableFuture 优化 Flink 程序,性能提升 50%
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...
香橙派 AIpro综合体验及AI样例运行
香橙派 AIpro综合体验及AI样例运行 环境: 香橙派版本: AIpro(8TOPSINT8) OS : Ubuntu 22.04.3 LTS(GNU/Linux 5.10.0 aarch64) (2024-03-18) 远程服务端1:OpenSSH 8.9p1 远程服务端2:TightVNC Server 1.3.10 远程客户端…...
通过域名接口申请免费的ssl多域名证书
来此加密已顺利接入阿里云的域名接口,用户只需一键调用,便可轻松完成域名验证,从而更高效地申请证书。接下来,让我们详细解读一下整个操作过程。 来此加密官网 免费申请SSL证书 免费SSL多域名证书,泛域名证书。 首先&a…...
【JAVA WEB实用与优化技巧】如何自己封装一个自定义UI的Swagger组件,包含Swagger如何处理JWT无状态鉴权自动TOKEN获取
目录 一、Swagger 简介1. 什么是 Swagger?2. 如何使用 Swagger3. Springboot 中swagger的使用示例1. maven 引入安装2. java配置 二、Swagger UI存在的缺点1.不够方便直观2.请求的参数没有缓存3.不够美观4.如果是JWT 无状态登录,Swagger使用起来就没有那…...
理解大语言模型(二)——从零开始实现GPT-2
相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型:从线性回归到通用人工智能》,欢迎有兴趣的读者多多支持。 本文涉及到的代码链接如下:regression2chatgpt/ch11_llm/char_gpt.ipynb1 本文将讨论如何利用PyTorch从零开始搭建G…...
SSH远程登录时常见问题解决
SSH时出现WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 问题解决——SSH时出现WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 翻译过来就是 警告:远程主机标识已更改! 此报错是由于远程的…...
工业级3D开发引擎HOOPS:创新与效率的融合!
在当今这个技术日新月异的时代,3D技术已成为推动各行各业发展的重要力量。从工程设计到游戏开发,从虚拟现实到增强现实,3D技术的应用无处不在,它极大地丰富了我们的生活和工作。而在这样的背景下,HOOPS作为一个强大的3…...
IDEA创建Spring Boot项目
1 打开新建项目界面 如图1,打开IDEA,点击菜单栏的File->New->Project,打开新建项目界面。 图1 新建项目 2 填写项目信息 在新建项目界面点击左侧工具栏的Spring Initializr选项,进行Spring Boot项目信息的填写ÿ…...
mysql实战——xtrabackup全量备份/增量备份及恢复
一、测试前准备 mysql数据库 端口3306数据文件目录 /data/mysql/3306/data 安装目录/usr/lcoal/mysql配置文件/etc/my.cnf 创建数据库 testXtra 创建备份目录 备份目录/data/backup/备份恢复数据文件目录/data/mysql/3307/data备份恢复配置文件/etc/my_3307.cnf 二、开始…...
探索演进:了解IPv4和IPv6之间的区别
探索演进:了解IPv4和IPv6之间的区别 在广阔的互联网领域中,设备之间的通信依赖于一组独特的协议来促进连接。前景协议中,IPv4(Internet 协议版本 4)和 IPv6(Internet 协议版本 6)是数字基础设施…...
Python 实现Word (DOC或DOCX)与TXT文本格式互转
目录 引言 安装Python库 使用Python将Word转换为TXT文本格式 使用Python将TXT文本格式转换为Word 引言 Word文档和TXT文本文件是日常工作和生活中两种常见的文件格式,各有其特点和优势。Word文档能够保留丰富的格式设置,如字体、段落、表格、图片等…...
anaconda install on CentOS 7
参考: CentOS 7安装conda并配置环境 CentOS 7安装conda并配置环境_centos conda-CSDN博客...
git管理Codeup云效平台
HTTPS方式实现Git命令 1.进入项目路径,如 cd demo,与此同时,在Codeup平台创建一个空仓库repo,获取空仓库的https协议地址,例如 https://codeup.aliyun.com/xxxx/xxxx/xxx.git。 2.在demo项目下执行 git init命令初始化…...
环模式饲料制粒机设计【农业机械】【论文+14张CAD图纸+proe三维+答辩稿】
环模式饲料制粒机作为农业机械领域的关键设备,其核心作用在于将粉状饲料原料通过物理挤压转化为颗粒状成品。这一过程不仅提升了饲料的适口性与营养保留率,更通过颗粒的规则形态减少了运输与储存过程中的粉尘损失,为规模化养殖提供了稳定高效…...
树莓派Ubuntu系统无显示器配置全攻略:VNC远程桌面与虚拟显示器实战
1. 树莓派Ubuntu系统初始化配置 第一次接触树莓派的朋友可能会觉得这个小玩意儿很神奇,巴掌大的板子居然能跑完整的桌面系统。我当初拿到树莓派4B时也兴奋了好一阵子,但很快发现一个现实问题:不是每个人都有多余的显示器可以长期接在树莓派上…...
国产化替代实战:在信创环境下用Docker-compose部署Nacos 2.2.0并连接达梦数据库
信创环境下Nacos与达梦数据库的无缝集成实战 在信息技术应用创新的大背景下,国产化替代已成为企业数字化转型的关键路径。作为微服务架构的核心组件,Nacos的国产化适配能力直接关系到整个系统的稳定性和可持续性。本文将深入探讨如何在信创环境中&#x…...
解锁3大核心能力:Path of Building完全掌握指南
解锁3大核心能力:Path of Building完全掌握指南 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding Path of Building(简称PoB)作为《流放…...
python 文件管理库 Path 解析(详细基础)
1 Path库能做什么: Path库是python常见的文件操作库(以对象形式操作文件路径),可以进行以下操作: 文件路径的拼接(example: test / Your_path / files ) 文件地址的提取(提取名称、…...
电容、电阻、红外…选哪个?一文讲透不同触摸传感器的应用场景和避坑指南
电容、电阻、红外触摸传感器选型实战指南:从原理到场景化决策 在智能硬件产品设计中,触摸传感器的选型往往成为决定用户体验成败的关键细节。当一位医疗设备工程师需要在消毒环境下实现可靠触控,或当工业控制面板设计师面对油污环境寻找解决方…...
一篇文章带你了解 HTTP协议 !!!
引言在 Web 开发体系中,HTTP 协议作为前后端数据交互的核心规范,定义了请求与响应的标准格式,是实现浏览器与服务器通信的基础;而 TCP 协议则为 HTTP 提供了可靠的传输保障,确保数据完整有序传输。本文带你了解一下HTT…...
深入解析Kubernetes中的RuntimeClass:容器运行时的“多面手调度器”
前言在Kubernetes集群中,我们通常默认使用containerd或Docker作为容器运行时。但随着业务场景的多样化、安全要求的严苛化以及硬件能力的演进,单一的运行时模型已无法满足所有需求:如何让金融应用运行在强隔离的轻量级虚拟机中,抵…...
Rust 入门:一个写了 6 年 Python 的人,聊聊真实体验和踩坑
上个月我接了个活,写一个日志分析工具,每天处理大概 2000 万行日志。一开始用 Python 写了个原型,跑起来单核吃满、内存飙到 4G,处理完一天的数据要 40 分钟。这玩意儿上线了不得被运维同事骂死? 正好 2026 年了&#…...
5个命名智慧:猫抓cat-catch文件命名系统完全指南
5个命名智慧:猫抓cat-catch文件命名系统完全指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾面对这样的困境:下…...
