Wie wird ein Array [String] für eine reguläre Übereinstimmung abgefragt?

8

Ich versuche, MongoDB über Casbah für ein Feld abzufragen, das ein Array von Strings mit einem Regexp ist.

Zum Beispiel:

Ich habe eine Maschine mit einer Liste von ips, die als String in den Feldern ips gespeichert sind. Jetzt möchte ich nach allen Maschinen suchen, die das Subnetz 192.168 haben.

Für mich sieht das so aus, dass ich kein Array mit einem Regexp abfragen kann, das auf jeden Eintrag angewendet wird, und wenn einer der Einträge übereinstimmt, wird der Rechner zurückgegeben.

Irgendeine Möglichkeit, eine solche Abfrage zu machen?

- Behoben

Danke für Ihre Hilfe.

Alles funktioniert jetzt. Am Ende muss ich an einer Einschränkung von Casbah arbeiten, weil ich mich an Abfragen mit $ oder an assoziieren musste und Casbah beschwert sich über fehlende Implicits mit der Regexp.

Mein endgültiger Code für eine RegExp-Array-Abfrage mit einem zusätzlichen anderen Feld lautet:

%Vor%

Es ist nicht der schönste Code und die Verkettung des Parameters muss festgelegt werden. Aber es funktioniert :)

    
Odo 13.01.2012, 15:27
quelle

2 Antworten

12

Sie können die Tatsache ignorieren, dass dies ein Array ist:

%Vor%

MongoDB verhält sich immer wie folgt: Wenn Sie ein Array wie ein normales Feld behandeln, wendet es die Operation auf jedes Mitglied an, und wenn eins übereinstimmt, betrachten Sie das übergeordnete Dokument als übereinstimmend.

    
mnemosyn 13.01.2012, 15:37
quelle
0

Sehen Sie nach, ob der $elemMatch Abfrageoperator für Sie funktioniert.

    
maerics 13.01.2012 15:32
quelle

Tags und Links