'like' oder $ regex Abfrage in $ cond in MongoDB

8

Bitte gehen Sie meine Frage durch:
MongoDB $ group und explizite Gruppenbildung mit berechneter Spalte

Aber dieses Mal muss ich Zeichenfolgen und nicht Zahlen vergleichen. Die CASE -Abfrage muss ein LIKE haben:
CASE WHEN source LIKE '%Web%' THEN 'Web'

Ich muss dann nach Quelle gruppieren. Wie schreibt man das in Mongo? Ich versuche Folgendes, aber nicht sicher, ob $regex in $cond unterstützt wird. Übrigens, gibt es irgendwo in $cond eine Liste gültiger Operatoren? Sieht aus wie $cond ist nicht sehr lieb von mir :)

%Vor%

Es gibt viele andere Werte, die ich schreiben muss, um eine tiefere Verschachtelung zu machen. Dies ist nur ein Beispiel mit nur "Android" und "Web" der Kürze halber. Ich habe beides mit $eq und $regex versucht. Die Verwendung von $regex gibt den Fehler eines ungültigen Operators, während die Verwendung von $eq den Regex-Ausdruck nicht versteht und alles unter "Others" ablegt. Wenn dies mit Regex möglich ist, lassen Sie mich bitte wissen, wie man es für die Groß- und Kleinschreibung schreibt.

Danke für jede Hilfe: -)

    
Aafreen Sheikh 21.01.2013, 15:23
quelle

2 Antworten

1

Nun, es scheint immer noch nicht geplant zu sein :( Ссылка

Ich benutze 2.6 und habe einen Blick auf 3.0 geworfen, aber es ist einfach nicht da.

Es gibt jedoch eine Problemumgehung, wenn Sie Ihr Problem auf einen stabilen Teilstring projizieren können. Dann können Sie $ substr das Feld und mehrere verschachtelte $ cond verwenden. Es ist peinlich, aber es funktioniert.

    
pkopac 04.03.2015 14:31
quelle
0

Vielleicht können Sie es mit MapReduce versuchen.

%Vor%

Sie können anstelle von MongoDB $ regex JavaScript-reguläre Ausdrücke verwenden.

    
rubenfa 27.11.2013 21:52
quelle

Tags und Links