【问题标题】:Convert MongoDB query format to SQL query将 MongoDB 查询格式转换为 SQL 查询
【发布时间】:2020-12-15 15:18:10
【问题描述】:

我需要做的是我需要将JSON字符串中的MongoDB查询格式(=>左侧)转换为对应的SQL查询WHERE子句(=>右侧)

{ status: "D" }`  **=>** `WHERE status = "D"
{ status: { $in: [ "A", "D" ] } }  **=>**  WHERE status in ("A", "D")
{ $or: [ { status: "A" }, { qty: { $lt: 30 } } ] }  **=>** WHERE status = "A" OR qty < 30
{ $and: [ { status: "A" }, { qty: { $lt: 30 } } ] } **=>** WHERE status = "A" AND qty < 30

能否请您给我任何我可以使用的框架/库? Projetc 使用Java 语言。

【问题讨论】:

  • 框架/库将 MongoDB 转换为 SQL?我不确定我是否正确理解了您的问题

标签: java sql json mongodb


【解决方案1】:

您可以尝试为此目的设计的 npm 包 mongo-to-sql-converter

根据您的问题调整文档:

var mongoToSqlConverter = require("mongo-to-sql-converter")

const MongoDBQuery = "db.user.find({ $or: [ { status: 'A' }, { qty: { $lt: 30 } } ] });"

const SQLQuery = mongoToSqlConverter.convertToSQL(MongoDBQuery, true)

console.log(SQLQuery)

将上述内容放在脚本中并在终端中使用 node 运行结果

✗ node mongo.js 

SELECT * FROM user WHERE (status = 'A' OR qty < 30);

这似乎是你所追求的。

【讨论】:

  • 更好地学习如何在 MongoDB 中编写查询。此转换器仅涵盖非常基本的功能。 NOT IN=ANY&lt;&gt;ALL 或正则表达式等内容不会被转换。
  • 解决方案涵盖问题中提供的示例。
  • 没有。有一些库可以让节点代码与 java 一起工作(例如 trireme),或者你可以将代码移植到 java,因为有很多 little of it
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多