首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB LIKE与Mysql LIKE

MongoDB LIKE与Mysql LIKE
EN

Stack Overflow用户
提问于 2012-02-24 08:16:16
回答 1查看 1.5K关注 0票数 1

我正在将一个站点的一些部分从mysql迁移到mongodb,其中一部分将使用mongodb搜索。我有一个问题,如果我在mysql中执行这个查询

代码语言:javascript
复制
SELECT * FROM table WHERE a1 LIKE '%test%' OR a2 LIKE '%test%'

我会得到超过10k的结果。没关系。

如果我在mongo中执行这个查询

代码语言:javascript
复制
$mongo->find(
    array(
        '$or' => array(
            array('a1' => new MongoRegex('/test/')),
            array('a2' => new MongoRegex('/test/'))
        )
    )
)->count();

我会得到大约2,000个结果,少5倍。这是怎么回事呢?

每个db中的数据是相同的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-24 08:29:26

默认为MySQL的LIKE is case-insensitive

以下两条语句说明字符串比较不区分大小写,除非其中一个操作数是二进制字符串:

mysql>选择'abc‘喜欢'ABC';-> 1

但是MongoDB的正则表达式搜索默认是大小写敏感的,因为JavaScript的正则表达式是大小写敏感的。

尝试使用不区分大小写的正则表达式。我不熟悉/i的语法,但是the fine manual说通常的MongoRegex修饰符应该可以工作:

代码语言:javascript
复制
new MongoRegex('/test/i')

大小写问题与在MySQL (~10k)中比在MongoDB (~2k)中获得更多匹配是一致的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9423529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档