Logisches ODER für zwei verschiedene Felder in $, wo Abfragen in mongodb
-
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"})
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