Una vez que hemos visto el uso del método .find() en MongoDB ahora vamos a ver como podemos filtrar datos en MongoDB.
El uso básico del método .find() hemos visto que es el siguiente:
db.coleccion.find()
Mediante esta consulta hemos conseguido recuperar todos los documentos de una colección. Pero si queremos filtrar datos en MongoDB deberemos de hacer uso de los parámetros del método .find().
El método método .find() recibe un documento JSON como parámetro que puede filtrar el contenido de los documentos que queramos recuperar. La sintaxis es:
db.coleccion.find(documentofiltro)
Es importante denotar que el parámetro del método método .find() es un documento JSON. De esta manera si partimos de nuestra lista de documentos de ciudades:
{ "_id" : ObjectId("525ab02733b01a66a9dcbc5b"), "ciudad" : "Madrid", "habitantes" : 3233527 } { "_id" : ObjectId("525ab02733b01a66a9dcbc5c"), "ciudad" : "Barcelona", "habitantes" : 1620943 } { "_id" : ObjectId("525ab02733b01a66a9dcbc5d"), "ciudad" : "Valencia", "habitantes" : 797028 } { "_id" : ObjectId("525ab02733b01a66a9dcbc5e"), "ciudad" : "Sevilla", "habitantes" : 702355 } { "_id" : ObjectId("525ab02733b01a66a9dcbc5f"), "ciudad" : "Zaragoza", "habitantes" : 679624 }
Podemos querer filtrar los datos relativos a la ciudad de Madrid. Para ello deberemos de construir un documento que indique que la ciudad es Madrid. El documento que lo representará será:
{ciudad:'Madrid'}
Ahora solo tenemos que pasar este documento al método método .find() para poder filtrar datos en MongoDB:
cursor = db.ciudades.find({ciudad:'Madrid'});
El método .find() siempre nos devolverá un cursor, aunque para nuestro ejemplo solo haya un documento dentro del cursor.
El código completo con la conexión a la base de datos y la consultar para que pueda filtrar datos en MongoDB sería el siguiente:
conn = new Mongo();
db = conn.getDB("demografia");
cursor = db.ciudades.find({ciudad:'Madrid'});
while (cursor.hasNext()) {
printjson(cursor.next());
}