regex - MongoDB 中 $cond 中的“like”或 $regex 查询

请回答我的这个问题:
MongoDB $group and explicit group formation with computed column

但这一次,我需要比较的是字符串,而不是数字。CASE 查询必须有一个LIKE:
CASE WHEN source LIKE '%Web%' THEN 'Web'

然后我需要按来源分组。如何在 Mongo 中写这个?我正在尝试以下方法,但不确定 $cond 中是否支持 $regex。顺便说一句,在某处的 $cond 中是否有有效运算符列表?看起来 $cond 不是很喜欢我 :)

db.Twitter.aggregate(
    { $project: { 
        "_id":0,
        "Source": {
            $cond: [
                { $regex:['$source','/.* Android.*/'] },
                'Android', 
                { $cond: [
                    { $eq: ['$source', 'web'] }, 'Web', 'Others'
                ] } 
            ]
        }
    } }
);

我需要在其中写入许多其他值,以进行更深的嵌套。为简洁起见,这只是一个仅包含“Android”和“Web”的示例。我用 $eq$regex 都试过了。使用 $regex 给出无效运算符的错误,而使用 $eq 不理解正则表达式并将所有内容置于“其他”下。如果使用正则表达式可以做到这一点,请告诉我如何编写它以进行不区分大小写的匹配。

感谢您的帮助:-)

最佳答案

好吧,它似乎仍然没有计划实现:( https://jira.mongodb.org/browse/SERVER-8892

我正在使用 2.6,并查看了 3.0,但它不存在。

不过,如果您可以将问题转换到稳定的子字符串上,则有一种解决方法。然后你可以 $substr 字段并使用多个嵌套的 $cond。这很尴尬,但它有效。

https://stackoverflow.com/questions/14441801/

相关文章:

mongodb - 对大量数据使用 Mongo 地理空间查询

mongodb - .NET 驱动程序与 LINQ : NotSupportedException:

mongodb - 使用 pymongo 将 MongoDB 导出为 CSV

python - 如何让 django celery 写入测试数据库以进行功能测试?

mongodb - Mongos认证

mongodb - 使用 SSL 的 mongodump 和 mongorestore

java - 在等待与 WritableServerSelector 匹配的服务器时超时 30000

mongodb - Mongoid 没有服务器可用匹配首选项

mongodb - MongoDB 中 V8 JavaScript 引擎对 map reduce 的

javascript - MongoDB 聚合框架 - 按年份分组