MongoDB CRUD操作:空值和缺失字段的查询
文章目录
- [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中空字段或缺失字段,可按照以下步骤操作:
导航至集合
- 在 MongoDB Atlas UI 中,单击侧栏中的数据库。
- 对于包含样本数据的数据库部署,单击浏览集合。
- 在左侧导航窗格中,选择
sample_training
数据库。 - 选择
companies
集合。
插入一个空文档
要查找包含空值或缺失值的文档,可在"过滤器"字段中指定查询过滤器文档。查询过滤文档使用查询运算符来指定搜索条件。
MongoDB 中不同的查询运算符以不同的方式处理空值。要应用查询过滤器,可将以下每个文档复制到过滤器搜索栏中,然后单击应用。
使用以下查询过滤器来匹配包含具有空值的描述字段或不包含描述字段的文档:
js
{ description : null }
使用以下查询过滤器仅匹配包含空值描述字段的文档。此过滤器指定字段的值必须为 BSON Type Null(BSON Type 10):
js
{ description : { $type: 10 } }
使用以下查询过滤器仅匹配不包含描述字段的文档。仅显示之前插入的文档:
js
{ description : { $exists: false } }