在 SQL 中选择范围的两种方法,在 MongoDB 中只有一种?

Posted

技术标签:

【中文标题】在 SQL 中选择范围的两种方法,在 MongoDB 中只有一种?【英文标题】:Two ways to select ranges in SQL, only one in MongoDB? 【发布时间】:2014-05-15 12:24:02 【问题描述】:

我有以下用于 SQL 的 SELECT 语句。

SELECT TransAmount FROM STOCK WHERE TransAmount between 100 and 110;

但是,此语句会从 querymongo.com 生成错误。它说“解析 mysql 查询失败:由于无法识别的运算符而无法解析 WHERE 子句”。我假设它在谈论 between 子句。

如果我错了,请纠正我,但是这条 SQL 语句是否与上面的语句完全相同?

SELECT TransAmount FROM STOCK WHERE TransAmount > 100 and TransAmount < 110;

此语句生成以下 MongoDB 代码。

db.STOCK.find(
    "TransAmount": 
        "$gt": 100,
        "$lt": 110
    
, 
    "TransAmount": 1
);

看起来 MongoDB 没有“介于”运算符。 MongoDB 是否使用不同的关键字处理范围内的选择,还是必须像这样设置它 $gt/%lt?

【问题讨论】:

你的2个语句是一样的... 原始 SQL 不能很好地转换为 MongoDB 等解决方案。你真正想做的是什么?您的数据目前的结构如何?使用 NoSQL 解决方案的原因通常意味着做事与以前不同。否则没有意义。 我觉得你的第一句话应该是SELECT TransAmount FROM STOCK WHERE TransAmount BETWEEN 100 AND 110; Between 只是你在第二个查询中所做的一个快捷方式,一个非标准的查询 酷。您想将其发布为答案并获得一些虚假的互联网积分吗? 【参考方案1】:

Between 只是您第二个查询的快捷方式(一种符号链接),我想它让生活更轻松。

MongoDB 还没有实现这样的快捷方式,我环顾四周寻找一个 JIRA 声明有人想要这样的操作员但是没有运气。

在 MongoDB 中进行范围的唯一且唯一的方法是使用 $gt$lt(您可以数 $in 等,但这是一种不同的范围,不是您要寻找的)。

【讨论】:

以上是关于在 SQL 中选择范围的两种方法,在 MongoDB 中只有一种?的主要内容,如果未能解决你的问题,请参考以下文章

在SQL查询结果中添加自增列的两种方法

SQL Server 批量插入数据的两种方法 - 转

SQL Server 批量插入数据的两种方法

MySQL Shell运行SQL的两种内置方法介绍

MySQL Shell运行SQL的两种内置方法介绍

jmeter常用的两种录制方法