【问题标题】:MongoDB regex returning "like" instead of "literal" matchMongoDB 正则表达式返回“like”而不是“literal”匹配
【发布时间】:2020-08-17 23:42:21
【问题描述】:

我需要执行不区分大小写的查找。 但是我得到了一个不区分大小写的“like”返回,其中“like”我的字符串匹配的东西

我可以通过添加 ^ 和 $ 在控制台或工具中克服这个问题 - 但是当我将 var 传递给查询时,我无法弄清楚如何在代码中做到这一点。

module.exports.getCollege = function( name, callback ) {
    
    const query = [
        {
            $match: {
                'name': { $regex: name, $options: 'i' }
            }
        },
        {
            $project: {
                'address': 1,
                'name': 1
            }
        }
    ];

    College.aggregate( query ).exec( callback );

}

返回

密歇根大学(对象), 密歇根大学弗林特校区(实物)

我只想要密歇根大学(对象)

如何获得 LITERAL 匹配,但不区分大小写???

++++++++++++++++++++++++++++

对 D. SM 的回应 - “使用排序规则...”

返回正确,因为字符串正确..

但是 - 不区分大小写不起作用

【问题讨论】:

  • 这是一个使用不区分大小写索引的好例子。正如@D.SM 建议的那样。它使用 find() 但聚合可以类似地声明要使用的排序规则。 stackoverflow.com/a/40914826/13885615

标签: regex mongodb


【解决方案1】:

如何获得 LITERAL 匹配,但不区分大小写???

在查询中指定排序规则并使用 $eq 而不是 $regex。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-02
    • 2022-01-14
    • 1970-01-01
    • 2018-03-31
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多