MongoDB聚合:$documents

2024-01-12 06:44
文章标签 mongodb 聚合 documents

本文主要是介绍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 参数会创建一个新的输出字段

这篇关于MongoDB聚合:$documents的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/597099

相关文章

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

ElasticSearch的DSL查询⑤(ES数据聚合、DSL语法数据聚合、RestClient数据聚合)

目录 一、数据聚合 1.1 DSL实现聚合 1.1.1 Bucket聚合  1.1.2 带条件聚合 1.1.3 Metric聚合 1.1.4 总结 2.1 RestClient实现聚合 2.1.1 Bucket聚合 2.1.2 带条件聚合 2.2.3 Metric聚合 一、数据聚合 聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如:

七、Maven继承和聚合关系、及Maven的仓库及查找顺序

1.继承   2.聚合   3.Maven的仓库及查找顺序

生产mongodb 分片与集群 方案

链接:http://my.oschina.net/pwd/blog/411439#navbar-header 注:主要是有一键安装的脚本可以借鉴

mongodb基本命令和Java操作API示例

1.Mongo3.2 java API示例:http://www.cnblogs.com/zhangchaoyang/articles/5146508.html 2.MongoDB基本命:http://www.cnblogs.com/xusir/archive/2012/12/24/2830957.html 3.java MongoDB查询(一)简单查询: http://www.cnblogs

使用jetty和mongodb做个简易文件系统

使用jetty和mongodb做个简易文件系统 - ciaos 时间 2014-03-09 21:21:00   博客园-所有随笔区 原文   http://www.cnblogs.com/ciaos/p/3590662.html 主题  MongoDB  Jetty  文件系统 依赖库: 1,jetty(提供http方式接口) 2,mongodb的java驱动(访问mo

mongodb简单入门

一篇较好的mongodb常用操作命令:http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html mongodb的java操作:http://www.cnblogs.com/cyhe/p/5451421.html

mongodb自启动脚本.md

可粘贴文本(不全): #!/bin/sh##chkconfig: 2345 80 90#description:mongodb#processname:mongodbif test -f /sys/kernel/mm/transparent_hugepage/enabled; thenecho never > /sys/kernel/mm/transparent_hugepage/e

MongoDB学习—(6)MongoDB的find查询比较符

首先,先通过以下函数向BookList集合中插入10000条数据 function insertN(obj,n){var i=0;while(i<n){obj.insert({id:i,name:"bookNumber"+i,publishTime:i+2000})i++;}}var BookList=db.getCollection("BookList")调用函数,这样,BookList

MongoDB学习—(5)修改器$inc,$unset,$push,$pushAll,$allToSet,$pop,$pull,$pullAll

通过db.help()可以查询到关于数据库的操作,一查询发现有很多方法 其中有一个方法为db.getCollection(cname),即通过这一个函数,传入数据库中的一个集合的名称来获取到该集合的一个对象,我们可以编写函数   function insertTenRecord(obj){ var i=0; while(i++<10){ obj.insert({id:i+1,a