Python Mongodb consultar documentos
En MongoDB, se utilizan los métodos find y find_one para consultar los datos de la colección, similar a la sentencia SELECT en SQL.
Los datos de prueba utilizados en este artículo son los siguientes:

Consultar un documento
Podemos usarfind_one()el método para consultar un documento de la colección.
Consultarsitesel primer dato del documento:
Ejemplo
El resultado de salida es:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EJEMPLO', 'alexa': '10000', 'url': 'https://www.example.com'}
Consultar todos los datos de la colección
find()El método puede consultar todos los datos de la colección, similar aSELECT *la operación en SQL.
El siguiente ejemplo buscasitestodos los datos de la colección:
Ejemplo
El resultado de salida es:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EJEMPLO', 'alexa': '10000', 'url': 'https://www.example.com'}
{'_id': ObjectId('5b2369cac315325f3698a1cf'), 'name': 'Google', 'alexa': '1', 'url': 'https://www.google.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb6'), 'name': 'Taobao', 'alexa': '100', 'url': 'https://www.taobao.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb7'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb8'), 'name': 'Facebook', 'alexa': '10', 'url': 'https://www.facebook.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb9'), 'name': '知乎', 'alexa': '103', 'url': 'https://www.zhihu.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbba'), 'name': 'Github', 'alexa': '109', 'url': 'https://www.github.com'}
Consultar los datos de campos específicos
Podemos usar el método find() para consultar los datos de campos específicos, estableciendo en 1 el valor correspondiente de los campos que se devolverán.
Ejemplo
El resultado de salida es:
{'name': 'EJEMPLO', 'alexa': '10000'}
{'name': 'Google', 'alexa': '1'}
{'name': 'Taobao', 'alexa': '100'}
{'name': 'QQ', 'alexa': '101'}
{'name': 'Facebook', 'alexa': '10'}
{'name': '知乎', 'alexa': '103'}
{'name': 'Github', 'alexa': '109'}
Excepto _id, no puedes especificar 0 y 1 al mismo tiempo en un objeto; si estableces un campo en 0, los demás serán 1, y viceversa.
El siguiente ejemplo devuelve todos los campos excepto el campo alexa:
Ejemplo
El resultado de salida es:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EJEMPLO', 'url': 'https://www.example.com'}
{'_id': ObjectId('5b2369cac315325f3698a1cf'), 'name': 'Google', 'url': 'https://www.google.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb6'), 'name': 'Taobao', 'url': 'https://www.taobao.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb7'), 'name': 'QQ', 'url': 'https://www.qq.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb8'), 'name': 'Facebook', 'url': 'https://www.facebook.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb9'), 'name': '知乎', 'url': 'https://www.zhihu.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbba'), 'name': 'Github', 'url': 'https://www.github.com'}
El siguiente código especifica 0 y 1 al mismo tiempo, por lo que se producirá un error:
Ejemplo
El mensaje de error es aproximadamente el siguiente:
... pymongo.errors.OperationFailure: Projection cannot have a mix of inclusion and exclusion. ...
Consultar según condiciones especificadas
Podemosfind()establecer parámetros en [el método] para filtrar los datos.
El siguiente ejemplo busca los datos cuyo campo name sea "EJEMPLO":
Ejemplo
El resultado de salida es:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EJEMPLO', 'alexa': '10000', 'url': 'https://www.example.com'}
Consulta avanzada
En las condiciones de la consulta, también podemos usar modificadores.
El siguiente ejemplo se usa para leer los datos del campo name cuyo primer carácter tenga un valor ASCII mayor que "H"; la condición del modificador de "mayor que" es{"$gt": "H"} :
Ejemplo
El resultado de salida es:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EJEMPLO', 'alexa': '10000', 'url': 'https://www.example.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb6'), 'name': 'Taobao', 'alexa': '100', 'url': 'https://www.taobao.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb7'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb9'), 'name': '知乎', 'alexa': '103', 'url': 'https://www.zhihu.com'}
Consultar usando expresiones regulares
También podemos usar expresiones regulares como modificadores.
Los modificadores de expresiones regulares solo se usan para buscar en campos de cadenas de texto.
El siguiente ejemplo se usa para leer los datos del campo name cuyo primer carácter sea "R"; la condición del modificador de expresión regular es{"$regex": "^R"} :
Ejemplo
El resultado de salida es:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EJEMPLO', 'alexa': '10000', 'url': 'https://www.example.com'}
Devolver un número específico de registros
Si queremos que la consulta devuelva un número específico de registros, podemos usarlimit()el método, que solo acepta un parámetro numérico.
El siguiente ejemplo devuelve 3 documentos:
Ejemplo
El resultado de salida es:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EJEMPLO', 'alexa': '10000', 'url': 'https://www.example.com'}
{'_id': ObjectId('5b2369cac315325f3698a1cf'), 'name': 'Google', 'alexa': '1', 'url': 'https://www.google.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb6'), 'name': 'Taobao', 'alexa': '100', 'url': 'https://www.taobao.com'}
Otras extensiones
Python Mongodb