MongoDB 学习笔记之 Aggregation Pipeline实战实现inner join
Posted AK47Sonic
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB 学习笔记之 Aggregation Pipeline实战实现inner join相关的知识,希望对你有一定的参考价值。
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}} ])
是不是很神奇?
步骤解析:
- $lookup:实现timestamp的等值连接,相等的leftT结果被放在timestampCol集合中
- $unwind:实现把leftT数组拉平,出现多条
- $project:实现对第二个等值连接rating的判断,并放在ratingEQ字段中
- $match:只取ratingEQ是true,说明第二个rating字段相等
以上是关于MongoDB 学习笔记之 Aggregation Pipeline实战实现inner join的主要内容,如果未能解决你的问题,请参考以下文章
mongodb Aggregation聚合操作之$bucket
mongodb Aggregation聚合操作之$facet