Logisches ODER für zwei verschiedene Felder in $, wo Abfragen in mongodb

StackOverflow https://stackoverflow.com/questions/1945577

  •  20-09-2019
  •  | 
  •  

Frage

Wie machen Sie eine Abfrage wie die unten, wo ich Hotels in London OR Hotels will, die in ihrem Namen haben hilton?

Diese Abfrage db.hotels.find ({$ where: "name = / hilton / i || city = / london / i"})

gibt einen solchen Fehler Fehler: { "$ err": "$, wo Kompilierungsfehler"}

Beide Abfragen separat arbeiten ok: db.hotels.find ({$ where: "city = / london / i"}) db.hotels.find ({$ where: "name = / hilton / i"})

War es hilfreich?

Lösung

Versuchen Sie diese:

db.hotels.find({
    $where: "/london/i.test(this.city) || /hilton/i.test(this.hotel)"
})

Hinweis Soweit ich verstehe $where hat eine pro-Dokument Auswertung, so ist es ziemlich langsam sein kann. Wenn Sie ein einzelnes Attribut haben würden, habe ich vorgeschlagen smth wie

db.hotels.find({name: /(hilton|london)/i})

Andere Tipps

Nun, die mongodb $ oder Bedingung unterstützt, können Sie dies tun, wie:

db.hotels.find( { $or: [ { name: /hilton/i }, 
                         { city: /london/i } 
                       ] 
              } );
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top