相关文章推荐
道上混的熊猫  ·  uniform_int_distributi ...·  4 周前    · 
想出国的钱包  ·  aapt.exe已停止工作 ...·  1 月前    · 
重感情的夕阳  ·  warinning: ...·  4 月前    · 

第二步:保留第一个join结果

第一步join的结果字段是一个Array类型的数据,如果想要做一个左外连接使用$unwind拆分即可,若是想仅保留第一个就不要拆分,先把第一步的结果使用$out输出到一个中间表中,再进行接下来的操作:

db.中间表.aggregate( {$project : { "_id": 0, "id": 1, "type": 1, "startNode": 1, "startKeyNo": 1, "endKeyNo": 1, "endNode": 1, "role": 1, "test":{$slice:["$node", 1]} ,{ $unwind : "$test" } ,{$out:"中间表2"}

解释:使用$slice 得到第一个

第三步:拆分字段

经过第二步以后,结果字段由数组变为了非数组的document 这一步,进一步把document中的字段拆分出来

db.第二步的结果集合名称.aggregate(
  {$project : {
	    "node_name": "$test.name"
//	,{$out:"结果集合名称"}

使用aggregate的$project , 使用$关键字和 . 得到属性的属性值

1.首先join代码:db.collection_1.aggregate([ { "$lookup": { "localField": "startKeyNo", "from": "collection_2", "foreignField": "keyNo", "as": "node" } }// , { "$unwind": "$node" ... select ad._id as adId,ad.name,o.h,o.w from adress as ad left join order as o on o._id=ad.aId; mongodb-aggregate连接写法 db.address.aggregate([ {$unwind:{ 今天开发同学向我们提了一个紧急的需求,从集合mt_resources_access_log中,根据字段refererDomain分组,取分组中最近一笔插入的数据,然后将这些符合条件的数据导入到集合mt_resources_access_log_new中。 接到这个需求,还是有些心虚的,原因有二,一是,业务需要,时间紧;二是,实现这个功能MongoDB聚合感觉有些复杂,聚合要走好多步。 数据记录格式如下: "_id" : ObjectId("5c1e23eaa66bf62c0c390afb"), "_class" : "C1", "resourceUrl" : "/st
一、 lookup的功能及语法 主要功能 是将每个输入待处理的文档,经过$lookup 阶段的处理,输出的新文档中会包含一个新生成的数组列(户名可根据需要命名新key的名字 )。数组列存放的数据 是 来自 被Join 集合的适配文档,如果没有,集合为空(即 为[ ]) 1、基本语法 from需要join的表, localField相当于主表的键,foreignFiel相当于join的键 db.getCollection.aggregate{ $lookup: from: &
 需求:要对 topics 问题表根据 teach_id(教师ID),tips._id(问题标签ID) 字段进行分组统计教师的答题情况生成报表,所以得根据 教师ID,标签ID 关联查询出 教师信息,标签信息 用作报表展示。 本文基于 MongoDB V3.2 聚合查询语法,V3.6 可使用更多的特性实现 topics 表数据结构: "_id" : "ffffea46-ab7d-4c1...
MongoDB是一种非关系型数据库,它没有传统SQL中的join操作。但是,可以使用MongoDB的$lookup操作实现类似于inner join和left join的效果。 使用$lookup操作可以将一个集合中的文档与另一个集合中的文档进行关联。具体实现方式如下: 1. inner join 假设我们有两个集合:orders和products,orders集合中的文档包含一个字段productId,这个字段的值与products集合中的_id字段相对应。我们可以使用以下代码实现inner join的效果: db.orders.aggregate([ $lookup: from: "products", localField: "productId", foreignField: "_id", as: "product" 在这个例子中,我们将orders集合中的每个文档与products集合中的文档进行匹配。如果匹配成功,$lookup操作将会将匹配的文档放入一个新的数组中,这个数组会被赋值给product字段。 2. left join 如果要实现left join的效果,我们需要使用MongoDB的$unwind操作,将$lookup操作返回的数组展开成多个文档。具体实现方式如下: db.orders.aggregate([ $lookup: from: "products", localField: "productId", foreignField: "_id", as: "product" $unwind: "$product" 在这个例子中,$lookup操作返回的数组会被展开成多个文档,每个文档中都包含一个匹配的products文档。如果没有匹配的文档,$lookup操作返回的数组会是一个空数组。