Mongodb聚合操作中的$unset

学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第62篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。

提到unset, 首先想到的是update操作中,使用unset删除冗余字段。而在聚合操作中的unset与UPDATE中的有什么不同, 通过本篇文档的描述就可以搞清楚。

定义

在聚合操作中,排除一些字段的返回。聚合操作中的$unset并没有对数据产生影响,而只是在返回结果中将不需要的字段排除。

语法

聚合操作中,在返回结果中排除单个字段

{$unset: "<field>"}

向$unset方法传入数组,在返回结果中排除多个字段

{$unset: ["<field1>", "<field2>", ...]}

unset是投射操作project中排除字段的另外一种实现方法

{$project: {"<field1>":0, "<field2>":0, ...}}

在嵌套文档中,使用点操作符定义需要排除的字段。

复制代码
{$unset: "<field.nestedfield>"} 
{$unset: ["<field.nestedfield>", ...]} 

应用

创建集合books并插入数据

复制代码
db.books.insertMany([
    { "_id" : 1, title: "Antelope Antics", isbn: "0001122223334", author: { last:"An", first: "Auntie" }, copies: [ { warehouse: "A", qty: 5 }, { warehouse: "B", qty: 15 } ] },
   { "_id" : 2, title: "Bees Babble", isbn: "999999999333", author: { last:"Bumble", first: "Bee" }, copies: [ { warehouse: "A", qty: 2 }, { warehouse: "B", qty: 5 } ] }
    ])

在聚合操作中,排除一个字段

复制代码
db.books.aggregate([{$unset: "copies"}])
db.books.aggregate([{$unset: ["copies"]}])

排除多个字段

复制代码
db.books.aggregate([{$unset: ["copies", "isbn"]}])

排除嵌套文档中的字段

复制代码
db.books.aggregate([{$unset: ["isbn", "author.first", "copies.warehouse"]}])
相关推荐
lzhdim1 分钟前
SQL 入门 17:MySQL 数据类型:从字符串到 JSON 的全面解析
数据库·sql·mysql·json
杨云龙UP26 分钟前
Oracle RAC / ODA 生产环境指定 PDB 启动 SOP
linux·运维·数据库·oracle
kingwebo'sZone36 分钟前
在Cent上安装Mysql 8.0的遇到的问题和解决办法
数据库·mysql·adb
幽络源小助理1 小时前
最新知识付费系统网站源码 PC+H5双端 附安装教程 – 幽络源源码网
大数据·数据库
小白考证进阶中1 小时前
Oracle OCP证书报考&考试全指南
数据库·oracle·oracle ocp·ocp认证·oracle认证·甲骨文认证·oracle ocp题库
Leon-Ning Liu2 小时前
【真实经验分享】 ORA-600 [qesmaGetTblSeg1]
数据库·oracle
与数据交流的路上2 小时前
MySQL 优化 -- 相关
数据库·mysql
Rooting++2 小时前
为什么mysql的表字段的collation会自动变
数据库·mysql
Wch1G0z8A2 小时前
Google 开源了啥,让 AI Agent 碰数据库不再是定时炸弹
数据库·人工智能·开源
tedcloud1233 小时前
cc-switch评测:多AI Coding Agent管理工具详解
数据库·人工智能·sql·学习·自动化