MongoDB es una base de datos orientada a documentos NoSQL . En MongoDB, los datos se almacenan en una estructura de documento similar a JSON en lugar de almacenar datos en columnas y filas. MongoDB es flexible para almacenar datos semiestructurados y no estructurados. MongoDB se utiliza para el almacenamiento de datos de gran volumen y puede escalar horizontalmente.
ObjectId: la clase ObjectId es un tipo BSON binario de 12 bytes, en el que 4 bytes de la marca de tiempo de creación, 5 bytes de un valor aleatorio y 3 bytes de contador incremental. ObjectId es la clave principal predeterminada para los documentos de MongoDB y generalmente se encuentra en el campo «_id».
eg : { "_id" : ObjectId("54759eb3c090d83494e2d804") }
PyMongo: PyMongo es un controlador nativo de Python para MongoDB. Permite la interacción con la base de datos MongoDB a través de Python.
Paso 1: asegúrese de iniciar la base de datos MongoDB localmente en el puerto predeterminado (27017). Conexión a MongoDB, acceso a la base de datos y recopilación de objetos.
Python3
# importing MongoClient from pymongo from pymongo import MongoClient # importing ObjectId from bson library from bson.objectid import ObjectId # Establishing connection with # mongodb on localhost client = MongoClient('127.0.0.1', 27017) # Access database object db = client['database'] # Access collection object collection = db['collection']
Paso 2: consultar MongoDB con find_one().
Sintaxis:
find_one(filter=None, *args, **kwargs) filter(optional): query filter that selects which documents should be included in the result set. *args (optional): any additional positional arguments *kwargs (optional): any additional keyword arguments
Ejemplo 1: en este ejemplo, ya hemos almacenado la instancia del objeto ObjectId, luego usamos la instancia del objeto almacenado para buscar el documento.
Python3
# inserts data into collection and # returns an object of type objectId objInstance = collection.insert_one({"name": "sam", "age": 20}).inserted_id # search MongoDB with # an object of type objectId collection.find_one(objInstance)
Producción:
Ejemplo 2: En este ejemplo, tenemos la string hexadecimal que no es un objeto de ObjectId. Importamos ObjectId de la biblioteca bson para buscar el documento.
Python3
# use the string object id # and objectId object to # create object of type ObjectId id = "5fec2c0b348df9f22156cc07" objInstance = ObjectId(id) collection.find_one({"_id": objInstance}) # below line works same as the above collection.find_one({"_id": ObjectId(id)}) collection.find_one(ObjectId(id))
Producción:
Ejemplo 3: En este ejemplo, avanzamos en la búsqueda especificando proyecciones, es decir, qué campo queremos incluir/excluir en el conjunto de resultados. La siguiente proyección devolverá el documento completo sin el campo «_id».
Python3
# search document with filter # first parameter is search query # second parameter is filter query # you can as many fields you want # you can specify either 1 or 0 # in filter fields # if you specify 0 the field will # be eliminated form the result query = {"_id": ObjectId(id)} filter = {"_id": 0} collection.find_one(query, filter)
Producción: