从 mysql 到 mongodb 的等效查询
Posted
技术标签:
【中文标题】从 mysql 到 mongodb 的等效查询【英文标题】:Equivalent query from mysql to mongodb 【发布时间】:2022-01-18 08:41:27 【问题描述】:JOIN t2 ON t1.id=t2.id AND t1.date=t2.date
我是 mongodb 的新手,我没有找到一个查询来加入两个集合,我需要比较两个集合中的两个字段。
【问题讨论】:
请注意,当您将应用程序从 mysql 等关系 RDBMS 迁移到 MongoDB 等 NoSQL 数据库时,通常 MongoDB 中的集合数量远少于 MySQL 中的表数量。否则,你做了一些根本错误的事情。 NoSQL 数据库没有针对连接进行优化,其中一些根本不支持连接! 【参考方案1】:您可以使用$lookup with custom pipeline 定义自定义“加入”条件:
db.col1.aggregate([
$lookup:
from: "col2",
let: col1_id: "$id", col1_date: "$date" ,
pipeline: [
$match:
$expr:
$and: [
$eq: [ "$id", "$$col1_id" ] ,
$eq: [ "$date", "$$col1_date" ]
]
],
as: "joinOutput"
])
Mongo Playground
请注意,let
部分是您从 col1
和 pipeline
中定义变量的地方,id
和 date
是对来自 col2
的对应字段的引用
【讨论】:
以上是关于从 mysql 到 mongodb 的等效查询的主要内容,如果未能解决你的问题,请参考以下文章
如何从 MSSQL 连接查询中的字段中获取表名? (mysql_field_table 等效)
春季是不是有 mongoDB 的 @MappedSuperclass 等效注释?