当前位置: 首页 > news >正文

MongoDB聚合:$documents

$documents阶段可以根据输入值返回字面意义的文档。

语法

{ $documents: <表达式> }

$documents接受可解析为对象数组的任何有效表达式,包括:

  • 系统变量,如 $$NOW $$SEARCH_META

  • $let 表达式

  • $lookup 表达式作用域中的变量

没有指向当前文档的表达式(如 $myField$$ROOT)将导致错误。

举例

测试管道阶段

下面例子为管道阶段创建测试和调试数据,无需创建测试集合。

db.aggregate([{ $documents: [ { x: 10 }, { x: 2 }, { x: 5 } ] },{ $bucketAuto: { groupBy: "$x", buckets: 4 } }]
)

聚合表达式不指定集合。它使用$documents阶段中的输入数据作为$bucketAuto阶段的输入。

[{ _id: { min: 2, max: 5 }, count: 1 },{ _id: { min: 5, max: 10 }, count: 1 },{ _id: { min: 10, max: 10 }, count: 1 }
]

在 $lookup 阶段使用 $documents 阶段

使用$documents修改$lookup的输出。

创建locations集合:

db.locations.insertMany([{ zip: 94301, name: "Palo Alto" },{ zip: 10019, name: "New York" }])

使用$documents作为数据源来转换文件。

db.locations.aggregate([{ $match: {} },{ $lookup:{localField: "zip",foreignField: "zip_id",as: "city_state",pipeline:[{ $documents:[{ zip_id: 94301, name: "Palo Alto, CA" },{ zip_id: 10019, name: "New York, NY" }]}]}}])

输出将locations集合中的数据与$documents管道阶段中的值相关联。

[{_id: ObjectId("618949d60f7bfd5f5689490d"),zip: 94301,name: 'Palo Alto',city_state: [ { zip_id: 94301, name: 'Palo Alto, CA' } ]},{_id: ObjectId("618949d60f7bfd5f5689490e"),zip: 10019,name: 'New York',city_state: [ { zip_id: 10019, name: 'New York, NY' } ]}
]
  • zip 字段对应 zip_id 字段

  • as 参数会创建一个新的输出字段

http://www.lryc.cn/news/278500.html

相关文章:

  • 程序员英语 - 英文会议常用句型
  • UV贴图和展开初学者指南
  • 解密Path环境变量
  • git撤销提交到本地的commit
  • 使用Adobe Acrobat Pro DC给pdf文件填加水印
  • 解决:Unity : Error while downloading Asset Bundle: Couldn‘t move cache data 问题
  • SpringBoot默认配置文件
  • Flink构造宽表实时入库案例介绍
  • 【Kubernetes】K8s 查看 Pod 的状态
  • Linux系统操作命令
  • 大模型学习与实践笔记(五)
  • 100个GEO基因表达芯片或转录组数据处理之GSE126848(003)
  • 1. Presto基础
  • ChatGPT可以帮你做什么?
  • 20240111在ubuntu20.04.6下解压缩RAR格式的压缩包
  • YOLOv5改进 | 检测头篇 | ASFFHead自适应空间特征融合检测头(全网首发)
  • 第十三章 接口测试(笔记)
  • Github搭建图床 github搭建静态资源库 免费CDN加速 github搭建图床使用 jsdelivr CDN免费加速访问
  • Airtest-Selenium实操小课②:刷B站视频
  • Linux chmod命令详解
  • 求幸存数之和 - 华为OD统一考试
  • 【QML COOK】- 008-自定义属性
  • 前端页面优化做的工作
  • Spark六:Spark 底层执行原理SparkContext、DAG、TaskScheduler
  • 关于鸿蒙的笔记整理
  • 【漏洞复现】先锋WEB燃气收费系统文件上传漏洞 1day
  • MYSQL篇--锁机制高频面试题
  • 创建一个郭德纲相声GPTs
  • 靶机实战(10):OSCP备考之VulnHub Tre 1
  • 在windows11系统上利用docker搭建linux记录