请通过我的这个问题:
MongoDB $group and explicit group formation with computed column
但这一次,我需要比较字符串,而不是数字。CASE
查询必须有一个LIKE
:
CASE WHEN source LIKE '%Web%' THEN 'Web'
然后我需要按源分组。如何在 Mongo 中写这个?我正在尝试以下但不确定是否$regex
支持内部$cond
。顺便说一句,$cond
某处是否有有效运算符的列表?看起来$cond
不是很喜欢我:)
db.Twitter.aggregate(
{ $project: {
"_id":0,
"Source": {
$cond: [
{ $regex:['$source','/.* Android.*/'] },
'Android',
{ $cond: [
{ $eq: ['$source', 'web'] }, 'Web', 'Others'
] }
]
}
} }
);
我需要在其中写入许多其他值,以进行更深的嵌套。为简洁起见,这只是一个仅包含“Android”和“Web”的示例。我已经尝试过$eq
和$regex
。Using$regex
给出了无效运算符的错误,而 using$eq
不理解正则表达式并将所有内容放在“其他”下。如果使用正则表达式可以做到这一点,请告诉我如何编写它以进行不区分大小写的匹配。
谢谢你的帮助 :-)