Insert Document Python MONGODB

Para insertar un documento en MongoDB utilizando Python, necesitarás utilizar la biblioteca pymongo. Para insertar un registro, o documento cómo se llama en MongoDB, en una colección, usamos el método insert_one(). El primer parámetro del método insert_one() es un diccionario que contiene los nombres y los valores de cada campo en el documento que desea insertar.


Ejemplo de Insert Document Python MONGODB

Inserte un registro en la colección de «clientes»:

import pymongo

# Establecer una conexión con el servidor MongoDB que se encuentra en localhost y en el puerto 12345
# Si MongoDB se encuentra en otro servidor o en un puerto diferente, es necesario cambiar la dirección y el puerto.
myclient = pymongo.MongoClient("mongodb://localhost:12345/")

# Seleccionar la base de datos llamada "bbdd"
mydb = myclient["bbdd"]

# Seleccionar la colección llamada "clientes" dentro de la base de datos
mycol = mydb["clientes"]

# Crear un diccionario llamado "mydict" con los datos que se desean insertar en la colección
# En este caso, el diccionario contiene dos campos: "nombre" y "direccion"
mydict = { "nombre": "Juan", # Insertar el documento "mydict" en la colección "clientes" utilizando el método insert_one()
# El método insert_one() devuelve un objeto que contiene el ID del documento recién insertado.
class="pythonkeywordstring">"direccion": "C/ Mayor 1" }

x = mycol.insert_one(mydict)
  • Este código se conecta a una base de datos MongoDB que se encuentra en localhost y en el puerto 12345. Luego, selecciona una base de datos llamada «bbdd» y una colección llamada «clientes».
  • Después, crea un diccionario llamado «mydict» con dos campos: «nombre» y «direccion».
  • Finalmente, inserta este documento en la colección «clientes» utilizando el método insert_one() y guarda el resultado en la variable «x».
  • El resultado contiene el ID del documento recién insertado en la base de datos.

Devuelve el campo _id

El método insert_one() de MongoDB devuelve un objeto InsertOneResult, y puedes acceder al inserted_id para obtener el ID del documento recién insertado. Aquí tienes el código actualizado con el print() para mostrar el ID del documento:

"import" pymongo

myclient = pymongo.MongoClient("mongodb://localhost:12345/")
mydb = myclient["bbdd"]
mycol = mydb["clientes"]

mydict = { "nombre": "Carlos", "direccion":  "Calle de Arriba 1" }

x = mycol.insert_one(mydict)

print(x.inserted_id)
  • Cuando ejecutes este código, mostrará el ID del documento recién insertado en la colección «clientes» de la base de datos «bbdd» en MongoDB.
  • Cada documento en MongoDB tiene un campo especial llamado «_id» que contiene su ID único.
  • Al insertar un documento sin proporcionar un ID explícito, MongoDB generará automáticamente un ID único para el nuevo documento y lo asignará al campo «_id». El inserted_id que se imprime es el mismo valor que tiene el campo «_id» en el documento insertado.

Insertar múltiples documentos

Para insertar varios documentos en una colección en MongoDB, usamos el método insert_many(). El primer parámetro del método insert_many() es una lista que contiene diccionarios con los datos que desea insertar:

import pymongo

myclient = pymongo.MongoClient( "mongodb://localhost:12345/")
mydb = myclient["bbdd"]
mycol = mydb["Clientes"]

mylist = [
  { "nombre": "Manuel", "direccion": "C/ Mayor 1"},
  { "nombre": "Carlos", "direccion": "C/ Ariiba 3"},
  { "nombre": "Enrique", "direccion": "C/ Mexico 2""},
  { "nombre": "Antonio", "direccion": "C/ República Argentina"},
  { "nombre": "Javi", "direccion": "C/ Serrano 100"},
  { "nombre": "Jorge", "direccion": "C/ Diagonal 1"},
  { "nombre": "David", "direccion": "C/ Mayo 3"},
  { "nombre": "Ana", "direccion": "C/ Samaranch 14"}
]

x = mycol.insert_many(mylist)

#print lista de los valores id de los documentos insertados:
print(x.inserted_ids)
  • Cuando ejecutas este código, insertará los documentos de la lista mylist en la colección «Clientes» de la base de datos «bbdd» en MongoDB.
  • Después, imprimirá la lista de los valores de ID de los documentos insertados, que son los mismos valores que tienen el campo «_id» en cada uno de los documentos recién insertados.

El método insert_many() devuelve un objeto InsertManyResult, que tiene una propiedad, insered_ids, que contiene los identificadores de los documentos insertados.


Insertar múltiples documentos, con identificadores especificados

Si no desea que MongoDB le asigne identificadores únicos a su documento, puede especificar el campo _id cuando inserte el (los) documento (s). Recuerda que los valores tienen que ser únicos. Dos documentos no pueden tener el mismo _id.

el campo _id se utiliza como identificador único para cada documento en una colección. Si deseas especificar tus propios identificadores únicos en lugar de que MongoDB los genere automáticamente, simplemente incluye el campo _id en tus documentos con los valores que deseas utilizar como identificadores.

En el ejemplo se especifica el campo _id para cada documento en la lista mylist antes de insertarlos en la colección «clientes»:

import pymongo

myclient = pymongo.MongoClient( "mongodb://localhost:27017/")
mydb = myclient[ "myddbb"]
mycol = mydb[ "clientes"]

mylist = [
  {  "id": 1, "nombre":  "Manuel", "direccion":  "C/ Mayor 1"},
  {  "id": 2, "nombre":  "Carlos", "direccion"":  "C/ Arriba 3"},
  {  "id": 3, "nombre":  "Antonio", "direccion":  "C/ Mexico 2"},
  {  "id": 4, "nombre":  "Javi", "direccion":  "C/ República Argentina 15"},
  {  "id": 5, "nombre":  "Jorge", "direccion":  "C/ Serrano 64"},
  {  "id": 6, "nombre":  "David", "direccion":  "C/ Diagonal 12"},
  {  "id": 7, "nombre":  "Ana", "direccion":  "C/ Mayo 3"},
  {  "id": 8, "nombre":  "Enrique", "direccion":  "C/ Samaranch 92"}
]

x = mycol.insert_many(mylist)

#print lista de los id de los archivos que se han insertado:
print(x.inserted_ids)

Con este código, los documentos se insertarán en la colección «clientes» con los identificadores únicos que has especificado en el campo id de cada documento. MongoDB asegurará que los valores del campo _id sean únicos en la colección y que no haya documentos con el mismo identificador.