【问题标题】:Two ways to select ranges in SQL, only one in MongoDB?在 SQL 中选择范围的两种方法,在 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 只是你在第二个查询中所做的一个快捷方式,一个非标准的查询
  • 酷。您想将其发布为答案并获得一些虚假的互联网积分吗?

标签: mysql sql performance mongodb syntax


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 2016-07-28
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    相关资源
    最近更新 更多