mongodb中非常好用的Aggregate入门教程
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,前言aggregate 翻译过来是聚合的意思, 但是在实际的使用的它的体验特别像linux中的管道, 每个管道处理完之后再把结果交个下一个管道, 你的数据就像水流, 最后通过各个管道你能够得到你想要的
千家信息网最后更新 2025年11月07日mongodb中非常好用的Aggregate入门教程
前言
aggregate 翻译过来是聚合的意思, 但是在实际的使用的它的体验特别像linux中的管道, 每个管道处理完之后再把结果交个下一个管道, 你的数据就像水流, 最后通过各个管道你能够得到你想要的数据
我们一般用Aggregate做什么
aggregate查询文档
- 聚合 平均数 等数据处理 group sum
- 地理位置信息 $geoNear
- 基本上mongodb的所有查询操作我们都可以用 aggregate实现, 用好这个基本上是万金油了
在这里我主要想记录一下mongodb在地理位置信息查询中使用到的技术,不仅可以查询到 距离 还可以按照距离排序
$geoNear 地理位置信息查询
首先我们的坐标数据在库里面怎么存, 类型为 Array , 记得加 2d 索引, 当然还有3d 索引, 目前还没有用到
const storeschema = new mongoose.Schema({ name: { type: String, required: true }, point: { type: Array, required: true }, // [lon, lat] }); storeschema.index({ point: '2d' }); return mongoose.model('store', storechema);然后按照就是地理查询代码了
this.ctx.model.Store.aggregate([{ $geoNear: { spherical: true, // spherical 是否按照球形状来求距离 distanceMultiplier: 6378137, maxDistance: 10000, near: [ lon1, lat1 ], distanceField: 'dist', key: 'point', query: { } }, }, //distanceMultiplier 这个参数是用于确定你返回的距离是什么单位 6378137 的单位是m //maxDistance 查询的最大距离 // near 中心点坐标// distanceField 距离放在哪个属性// key 保存坐标数据的地方// query 你的过滤条件 有一个很有意思的地方是
match 所以在这里有一个 query属性来补齐这种遗憾
但是你可以在 后面 使用$match 对查到的所有地理位置信息数据做再一次的筛选
$lookup mongodb中的联表查询
$lookup 是在比较新的mongodb版本中才能使用的属性, 当然这个属性也是用于 aggregate中的, 它补齐了之前mongodb中无法联表的遗憾
看代码
await this.ctx.model.MemberInfo.aggregate([ { $match: { store: new ObjectId(store) } }, { $lookup: { from: 'users', localField: 'user', foreignField: '_id', as: 'user' } }, { $replaceRoot: { newRoot: { $mergeObjects: [{ $arrayElemAt: [ '$user', 0 ] }, '$$ROOT' ] } } }, { $match: { 'certification.name': { $regex: search } } }, { $project: { _id: 1 } } ]);memberinfo 与 user 表在这里我想要获取 memberinfo localField: 'user' 为外键对应 user表 foreignField: '_id' _id字段他的额外属性...
说白了 我的会员表里面只存了用户的id 现在我想要拿到用户的 其它信息...
附上链接吧 $lookup
写在最后
当然说他是查询万金油他当然支持 定义数据的输出
limit $sort 等常规操作
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
查询
数据
信息
地理
属性
位置
地理位置
管道
坐标
遗憾
万金
万金油
代码
内容
单位
地方
就是
是在
用户
索引
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
mysql数据库架构
传到数据库的图片路径怎么找
湛江考试软件开发定制
硬汉阿雷网络安全讲堂
软件开发工具版权
国泰安数据库长期待摊费用
河南数据库安全审计
qq号码安全服务器在哪里
北京的网络安全实验室
新装的无线网网络安全密匙
jdbc存入数据库代码
推荐系统的数据库大概要多少
强网杯网络安全大赛试题
中国ntp服务器ip地址
服务器安全狗安装补丁失败
软件开发合同金额
反洗钱数据库共享与安全
思科网络技术学院教程区别
怎样录网络安全小课堂视频
整车网络安全和风险评估
军事装备数据库sql
怎样破解pdms数据库的密码
普陀区软件开发预算
娱乐先锋点歌机服务器
剑三服务器登不上
数据库的三级模型结构包括
代码建数据库
图数据库中文文档
女计算机应用技术网络技术
上海推广软件开发销售价格