MongoDB CRUD操作:空值和缺失字段的查询

MongoDB CRUD操作:空值和缺失字段的查询

文章目录

MongoDB中不同的查询运算符会以不同的方式处理空值,这篇文章就针对查询时空值和缺失字段的各种情况进行一下说明。

使用下面的脚本创建inventory集合:

js 复制代码
db.inventory.insertMany([
   { _id: 1, item: null },
   { _id: 2 }
])

等式过滤器

{ item : null }查询匹配包含 item 字段且值为 null 或不包含 item 字段的文档。

js 复制代码
db.inventory.find( { item: null } )

不等式过滤器

要查询存在且不为空的字段,可以使用{ $ne : null }过滤器。 { item : { $ne : null } }查询匹配item字段存在且具有非空值的文档。

js 复制代码
db.inventory.find( { item: { $ne : null } } )

类型检查

{ item : { $type: 10 } }可以匹配包含item字段且值为null的文档;即item字段的值为 BSON Type Null(BSON Type 10)

js 复制代码
db.inventory.find( { item : { $type: 10 } } )

该查询只返回item字段值为null的文档。

检查是否存在

下面的示例查询不包含字段的文档。

{ item : { $exists: false } }查询不包含item字段的文档:

js 复制代码
db.inventory.find( { item : { $exists: false } } )

使用 MongoDB Atlas 查询空或缺失字段

不能再使用查询过滤器$type: 0作为 $exists:false 的同义词。

查询MongoDB Atlas中空字段或缺失字段,可按照以下步骤操作:

导航至集合

  1. 在 MongoDB Atlas UI 中,单击侧栏中的数据库。
  2. 对于包含样本数据的数据库部署,单击浏览集合。
  3. 在左侧导航窗格中,选择sample_training数据库。
  4. 选择companies集合。

插入一个空文档

要查找包含空值或缺失值的文档,可在"过滤器"字段中指定查询过滤器文档。查询过滤文档使用查询运算符来指定搜索条件。

MongoDB 中不同的查询运算符以不同的方式处理空值。要应用查询过滤器,可将以下每个文档复制到过滤器搜索栏中,然后单击应用。

使用以下查询过滤器来匹配包含具有空值的描述字段或不包含描述字段的文档:

js 复制代码
{ description : null }

使用以下查询过滤器仅匹配包含空值描述字段的文档。此过滤器指定字段的值必须为 BSON Type Null(BSON Type 10):

js 复制代码
{ description : { $type: 10 } }

使用以下查询过滤器仅匹配不包含描述字段的文档。仅显示之前插入的文档:

js 复制代码
{ description : { $exists: false } }
相关推荐
敖云岚1 小时前
【Redis】分布式锁的介绍与演进之路
数据库·redis·分布式
LUCIAZZZ2 小时前
HikariCP数据库连接池原理解析
java·jvm·数据库·spring·springboot·线程池·连接池
我在北京coding2 小时前
300道GaussDB(WMS)题目及答案。
数据库·gaussdb
小Tomkk2 小时前
阿里云 RDS mysql 5.7 怎么 添加白名单 并链接数据库
数据库·mysql·阿里云
明月醉窗台3 小时前
qt使用笔记二:main.cpp详解
数据库·笔记·qt
沉到海底去吧Go4 小时前
【图片自动识别改名】识别图片中的文字并批量改名的工具,根据文字对图片批量改名,基于QT和腾讯OCR识别的实现方案
数据库·qt·ocr·图片识别自动改名·图片区域识别改名·pdf识别改名
老纪的技术唠嗑局4 小时前
重剑无锋,大巧不工 —— OceanBase 中的 Nest Loop Join 使用技巧分享
数据库·sql
未来之窗软件服务4 小时前
JAVASCRIPT 前端数据库-V6--仙盟数据库架构-—-—仙盟创梦IDE
数据库·数据库架构·仙盟创梦ide·东方仙盟·东方仙盟数据库
一只爱撸猫的程序猿6 小时前
构建一个简单的智能文档问答系统实例
数据库·spring boot·aigc
nanzhuhe6 小时前
sql中group by使用场景
数据库·sql·数据挖掘