10

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

助けてくれてありがとう:-)

4

2 に答える 2