码迷,mamicode.com
首页 > 数据库 > 详细

MongoDB 学习笔记之 Aggregation Pipeline实战实现inner join

时间:2017-09-08 23:51:29      阅读:443      评论:0      收藏:0      [点我收藏+]

标签:blog   line   class   ora   text   http   foreign   div   bsp   

 Aggregation Pipeline实战实现inner join:

 

 leftT集合:

技术分享

 comments集合:

技术分享

 

现在我们要用aggregation实现inner join

db.comments.aggregate([{
$lookup:
{
from:"leftT",
localField:"timestamp",
foreignField:"timestamp",
as: "timestampCol"
}},
{$unwind: "$timestampCol"},
{$project: {"ratingEQ": {"$eq": ["$rating", "$timestampCol.rating"]}, "timestamp" : 1, "rating" : 1,  "timestampCol.timestamp": 1}},
{$match: {"ratingEQ":true}}
])

 

技术分享

是不是很神奇?

步骤解析:

  1. $lookup:实现timestamp的等值连接,相等的leftT结果被放在timestampCol集合中
  2. $unwind:实现把leftT数组拉平,出现多条
  3. $project:实现对第二个等值连接rating的判断,并放在ratingEQ字段中
  4. $match:只取ratingEQ是true,说明第二个rating字段相等

 

MongoDB 学习笔记之 Aggregation Pipeline实战实现inner join

标签:blog   line   class   ora   text   http   foreign   div   bsp   

原文地址:http://www.cnblogs.com/AK47Sonic/p/7496750.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!