2009-12-22 11 views
5

¿Cómo se hace una consulta como la siguiente, donde quiero hoteles en Londres O hoteles que tienen hilton en su nombre?

Este db.hotels.find consulta ({$ donde: "name =/Hilton/i || = ciudad/Londres/i"})

da un error tales error: { "$ err ": "$, donde compila error"}

Ambas consultas funciona bien por separado: db.hotels.find ({$ donde: "ciudad =/Londres/i"}) db.hotels.find ({$ donde : "name =/Hilton/i"})

Respuesta

5

Prueba esto:

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

NOTA Por lo que entiendo, $where realiza una evaluación por documento, por lo que puede ser bastante lento. Si desea tener un solo atributo, que había sugerido algo bajo como

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

Pero Busco a dos diferentes campos :(de lo contrario la segunda consulta estaría bien –

+0

¡Ah! He actualizado la respuesta. –

+0

Gracias Alex :) eres casi correcto –

7

Ahora, que apoya mongodb $ o condición, puede hacer esto como:

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