Docs 菜单
Docs 主页
/
Relational Migrator
/ /

转换视图

在此页面上

  • 关于此任务
  • 开始之前
  • 步骤
  • 示例
  • 后续步骤
  • 了解详情

查询转换器采用 SQL来创建视图,并将其转换为等效的MQL 。 转换 SQL 代码时,查询转换器会考虑项目中定义的映射规则和模式转换。 有关转换过程的详细信息,请参阅转换视图示例。

  • 查询转换器使用AI技术,该技术可能无法转换过长或复杂的查询、触发器或存储过程。 某些查询可能无法正确转换,而另一些查询则可能根本无法转换。

  • 查询转换器使用当前项目中的关系模式、MongoDB 模式和映射规则来确定应如何转换查询。 如果查询引用的表不在关系模式中或者未映射到 MongoDB collection,则转换可能会失败或不正确。

  • 转换的查询、Atlas Triggers、视图和存储过程保存在项目中,并在项目导入和导出过程中持续存在。

  • SQL查询仅限于40 , 000文本字符。

  • 您可以在左侧 Query Converter窗格中查看以前转换的历史记录。 每次转换都有一个指示转换结果的图标。 如果对象旁边没有 图标,则尚未尝试转换:

    Icon
    说明
    转圈
    现在正在执行转换。
    绿色复选标记
    转换成功。
    红色感叹号
    上次转换尝试失败。

在将查询转换器部署到生产环境之前,请务必检查并测试查询转换器生成的代码。

1

Code Generation标签页中,单击Query Converter窗格。

2
  • 如果这是您第一次在项目中使用查询转换器,请单击Import From Database

  • 如果您的项目已经转换了 SQL 代码,请单击左侧窗格中的Manage Database Objects按钮。

3
  1. 指定源数据库的连接详细信息。

    有关详细信息,请参阅关系数据库连接字符串。

  2. 单击 Connect(连接)。

4
  1. Import Database Objects模式中,单击您的数据库。

  2. 单击模式旁边的图标。

  3. 单击Views旁边的图标。

  4. 要选择要转换的视图,请单击视图名称旁边的图标。 默认情况下,会选择所有视图。

  5. 单击 Save(连接)。

5
  1. 单击左侧窗格中Views下的视图名称。

    SQL 代码显示在Imported View窗格中。

  2. 单击Convert按钮。 等待查询转换器转换您的代码。

    转换后的 MongoDB 代码显示在Converted MongoDB Query窗格中。

    如果查询转换器出现错误,您可以在 Converted MongoDB Query 窗格中查看详细信息。

  3. 单击图标将 MongoDB 代码复制到剪贴板。

  4. 测试并验证生成的 MongoDB 代码。

提示

您可以使用Filter文本框,根据对象名称和 SQL 语法筛选查询、存储过程、触发器和视图。

以下示例显示了来自示例 Northwind 数据库的 PostgreSQL 视图转换为 MongoDB 代码的情况。

如果要从查询创建 MongoDB 视图:

以下示例显示了转换为 MongoDB 的内连接视图:

SQL Syntax
MongoDB 语法
SELECT
O.ORDER_ID,
O.CUSTOMER_ID,
O.ORDER_DATE,
OD.UNIT_PRICE,
OD.DISCOUNT
FROM ORDERS AS O
INNER JOIN ORDER_DETAILS AS OD
ON O.ORDER_ID = OD.ORDER_ID;
async function query(db) {
return await db.collection('orders').aggregate(
[
{
$lookup:
{
from: "orderDetails",
localField: "orderId",
foreignField: "orderId",
as: "orderDetails"
},
},
{
$unwind: "$orderDetails",
},
{
$project:
{
orderId: 1,
customerId: 1,
orderDate: 1,
unitPrice: "$orderDetails.unitPrice",
discount: "$orderDetails.discount"
}
}
]
).toArray();
}

在 MongoDB 中创建此视图的 shell 命令为:

db.createView("VW_OrderDetails", "orders",
[
{
$lookup:
{
from: "orderDetails",
localField: "orderId",
foreignField: "orderId",
as: "orderDetails"
},
},
{
$unwind: "$orderDetails",
},
{
$project:
{
orderId: 1,
customerId: 1,
orderDate: 1,
unitPrice: "$orderDetails.unitPrice",
discount: "$orderDetails.discount"
}
}
]
)

以下示例显示了转换为 MongoDB 的聚合分组依据视图:

SQL Syntax
MongoDB 语法
SELECT
POSTAL_CODE,
COUNT(*) AS CUSTOMERCOUNT
FROM CUSTOMERS
GROUP BY POSTAL_CODE
ORDER BY CUSTOMERCOUNT DESC;
async function query(db) {
return db.collection('customers').aggregate(
[
{
$group:
{
_id: "$postal_code",
customercount: { $sum: 1 }
}
},
{
$sort: { customercount: -1 }
}
]
).toArray();
}

在 MongoDB 中创建此视图的 shell 命令为:

db.createView("VW_Customers", "customers",
[
{
$group:
{
_id: "$postal_code",
customercount: { $sum: 1 }
}
},
{
$sort: { customercount: -1 }
}
]
)

后退

转换Atlas Triggers