examples ejemplos and allowdiskuse mongodb mongodb-shell

ejemplos - mongodb aggregate lookup



MongoDB $ o consulta (1)

Usar $ en

Para la consulta en la pregunta, es más apropiado usar $in

db.Profiles.find ( { "name" : { $in: ["gary", "rob"] } } );

Porque no funciona

Falta una cita: el cli está esperando a que termines la segunda parte de tu o:

db.Profiles.find ( { $or : [ { "name" : "gary" }, {"name":"rob} ] } ) ..............................................................^

Debe finalizar la consulta lo suficiente para que el cli la analice y luego diga que hay un error de sintaxis.

Coincidencia insensible a mayúsculas

Como lo indica un comentario, si desea buscar de una manera que no distinga entre mayúsculas y minúsculas, entonces usa $or con $regex :

db.Profiles.find ( { $or : [ { "name" : /^gary/i }, {"name": /^rob/i } ] } )

O simplemente usa una expresión regular:

db.Profiles.find ( { "name" : /^(gary|rob)/i } )

Sin embargo, una consulta de expresiones regulares que no comienza con una cadena fija no puede usar un índice (no puede usar un índice y efectivamente hace que "comience aquí hasta que no se encuentre una coincidencia, entonces salga") y, por lo tanto, no es óptima. Si este es su requisito, es una mejor idea almacenar un campo de nombre normalizado (por ejemplo, name_lc - nombre en minúscula) y consultar sobre eso:

db.Profiles.find ( { "name_lc" : { $in: ["gary", "rob"] } } );

Ejecuto la siguiente consulta en mongo shell:

db.Profiles.find ( { $or: [ {"name": "gary"}, {"name": "rob"} ] } )

¿Solo devuelve nada como esperaba (JSON)?