2009-12-22 9 views
5

Come si fa a fare una query come quella qui sotto, dove voglio hotel a Londra O hotel che hanno hilton nel loro nome?

Questa query db.hotels.find ({$ dove: "name =/Hilton/i || città =/London/i"})

dà un tale errore errore: { "$ err ": "$ dove errore di compilazione"}

entrambe le query separatamente funziona ok: db.hotels.find ({$ dove: "city =/London/i"}) db.hotels.find ({$ dove : "name =/hilton/i"})

risposta

5

Prova questo:

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

NOTA Per quanto ne so, lo $where esegue una valutazione per documento, quindi può essere piuttosto lento. Se desideri avere un singolo attributo, avevo suggerito smth come

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

ma cerco di due diversi campi :(altrimenti la seconda query andrebbe bene –

+0

Ah! Ho aggiornato la risposta. –

+0

Grazie Alex :) sei aaaalmost right –

7

Ora, che MongoDB supporta $ o condizione, si può fare questo tipo:

db.hotels.find({ $or: [ { name: /hilton/i }, 
         { city: /london/i } 
         ] 
       }); 
Problemi correlati