私のこの質問を読んでください:
MongoDB $group および計算列を使用した明示的なグループ形成
しかし今回は、数値ではなく文字列を比較する必要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。使用$regexすると無効な演算子のエラーが発生しますが、使用$eqすると正規表現が理解されず、すべてが「その他」の下に置かれます。これが正規表現で可能な場合は、大文字と小文字を区別しない一致の書き方を教えてください。
助けてくれてありがとう:-)