2013-09-29 17 views
6

Ich muss Dokumente basierend auf mehreren Textfeldern finden.Mungo oder Abfrage

var term = new RegExp(req.query.search, 'i'); 
.find({ company_name: { $regex: term }}); 

Mit den oben genannten funktioniert super. Wenn ich jedoch versuche, ein zusätzliches Feld unter Verwendung von

hinzuzufügen, kann es keine Datensätze abrufen. Ich muss das für ein paar weitere Felder tun.

Im Schema sind die verschiedenen Textfelder indiziert, aber nicht zusammen als ein einzelner Index für mehrere Felder. Würde das besser funktionieren und wenn ja, gibt es dafür eindeutige Beispiele? Die Dokumentation, die ich fand, war ziemlich spärlich.

Irgendwelche Ideen?

Antwort

9

Legen Sie beide Felder in einem Array, das or übergeben wird:

.find().or([{ company_name: { $regex: term }}, { bio: { $regex: term }}]); 

Separate Einfeld-Indizes sind das, was Sie als jeder Begriff als eine separate Abfrage ausgeführt or wollen.

+0

macht Sinn und behebt mein Problem. Vielen Dank – user2787799