私のこの質問を読んでください:
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
すると正規表現が理解されず、すべてが「その他」の下に置かれます。これが正規表現で可能な場合は、大文字と小文字を区別しない一致の書き方を教えてください。
助けてくれてありがとう:-)