MongoDB-聚合操作$project
什么是聚合操作
- 聚合操作就是通过一个方法完成一系列的操作
- 在聚合操作中, 每一个操作我们称之为一个阶段
- 聚合操作会将上一个阶段处理结果传给下一个阶段继续处理
- 所有阶段都处理完毕会返回一个新的结果集给我们
聚合操作格式
db.<collection>.aggregate(<pipeline>, <options>)
<pipeline>
: 定义每个阶段操作<options>
: 聚合操作额外配置
聚合管道阶段
可以利用,
$project
对输入文档进行再次投影
- 作用: 按照我们需要的格式生成结果集
- 格式:
{$project:{<field>:<value>}}
好了介绍了这么多我们来看示例吧,首先添加测试数据如下:
db.person.insert([
{name:{firstName:'Jonathan', lastName:'Lee'}, age:18, book:{name:'玩转HTML', price: 88}},
{name:{firstName:'Amelie', lastName:'BNTang'}, age:17, book:{name:'玩转JavaScript', price: 99}}
]);
db.person.find();
关于 @project:
db.person.aggregate([
{
$project:{
_id:0,
clientName: '$name.firstName',
clientAge: '$age'
}
}
]);
聚合表达式
字段路径表达式
$<filed>
: 使用$
来指示字段路径$<filed>.<sub-field>
: 使用$
和.
来指示内嵌文档字段路径
字段路径表达式示例
- $name
- $book.name
注意点
$project 修改的是结果集而不是原有的集合
db.person.aggregate([
{
$project:{
_id:0,
myName: '$name.lastName'
}
}
]);
db.person.find();
如果在 @project 聚合操作中使用了原有文档不存在的字段, 那么会自动用
Null
来填充
_id: 0
的含义就是说 _id 这个字段不展示,可以告诉它那些字段需要显示那些字段不需要显示
db.person.aggregate([
{
$project:{
_id:0,
fullName: ['$name.firstName', '$name.middleName','$name.lastName'],
clientAge: '$age'
}
}
]);
分类:
MongoDB4.X+新特性
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具