在 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 中只有一种?的主要内容,如果未能解决你的问题,请参考以下文章