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"]}])
相关推荐
LaughingZhu几秒前
Product Hunt 热榜 2026-10-30:Empacer、Scape、Floot in ChatGPT
java·前端·数据库·人工智能·chatgpt·notion
standxy19 分钟前
即时库存同步实战:从旺店通拉取库存详情落库 MySQL 的完整策略
数据库·集成·电商
麦壳饼19 分钟前
SonnetDB:工业 IoT 中的 PID 历史分析与 PLC 协作
数据库·sonnetdb
吹什么轩24 分钟前
MySQL 事务管理:从 ACID 到 MVCC,一篇讲透
数据库·mysql
时间售卖铺1 小时前
Oracle DQL精髓:从基础到高级实战
运维·数据库·云原生·oracle
m0_639906941 小时前
MySQL 锁机制详解|表锁、行锁、意向锁,死锁成因与解决方案
数据库·mysql
进击的荆棘1 小时前
MySQL——在ubuntu环境下安装MySQL
数据库·mysql·ubuntu
hey you~2 小时前
云呼叫中心坐席自动分配实战:ACD 策略、Redis+Lua 实现与排查清单
数据库·redis·lua·云呼叫中心·acd·坐席分配·坐席状态机
夜雪一千2 小时前
MySQL 数据字典如何获得
数据库·mysql
系统集成-鹰翔2 小时前
ERP推单数据库怎么备份:SQLite WAL模式下只复制db文件为什么可能漏任务
javascript·数据库·经验分享·后端