Overview
En esta guía, puedes aprender a usar el controlador C para agregar documentos a una colección de MongoDB realizando operaciones de inserción.
Una operación de inserción inserta uno o más documentos en una colección de MongoDB. Puedes realizar una operación de inserción utilizando las siguientes funciones:
mongoc_collection_insert_one()función para insertar un único documentomongoc_collection_insert_many()función para insertar uno o más documentos
Datos de muestra
Los ejemplos en esta guía utilizan la colección restaurants en la base de datos sample_restaurants de los conjuntos de datos de muestra de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulta la guía MongoDB Primeros Pasos.
El campo _id
En una colección de MongoDB, cada documento debe contener un campo _id con un valor de campo único.
MongoDB permite gestionar este campo de dos formas:
Establece el campo
_idpara cada documento tú mismo, asegurándote de que cada valor sea único.Permite que el driver genere automáticamente valores únicos de
bson_oid_tpara cada campo_iddel documento.
A menos que pueda garantizar la exclusividad, recomendamos dejar que el controlador genere automáticamente los valores de _id.
Nota
Los valores duplicados _id vulneran las restricciones de índice único, lo cual provoca que el controlador devuelva un error mongoc_bulkwriteexception_t.
Para obtener más información sobre el campo _id, consulta la guía Índices únicos en el manual del MongoDB Server.
Para obtener más información sobre la estructura y las reglas de los documentos, consulta la guía de Documentos en el manual de MongoDB Server.
Inserta un documento
Para agregar un solo documento a una colección de MongoDB, llama a la función mongoc_collection_insert_one() y pasa los siguientes parámetros:
Colección en la que está insertando documentos
Documento a insertar
Opciones para personalizar la operación, o
NULLPuntero al almacenamiento sobrescribible que contendrá los resultados de las operaciones, o
NULLUbicación para un valor de error o.
NULL
Utiliza la siguiente sintaxis para insertar un documento:
bson_t *document = BCON_NEW("<field name>", BCON_UTF8("<value>"));bson_error_t error;
if (!mongoc_collection_insert_one( collection, document, NULL, NULL, &error)) { fprintf(stderr, "Insert one operation failed: %s\n", error.message);}bson_destroy(document);El siguiente ejemplo inserta un documento en la colección restaurants:
bson_t *document = BCON_NEW("name", BCON_UTF8("Mongo's Burgers"));bson_error_t error;
if (!mongoc_collection_insert_one(collection, document, NULL, NULL, &error)) { fprintf(stderr, "Insert one operation failed: %s\n", error.message);}bson_destroy(document);Inserta varios documentos
Para agregar varios documentos a una colección de MongoDB, llame a la función mongoc_collection_insert_many() y pase los siguientes parámetros:
Colección en la que está insertando documentos
Arreglo de punteros a los documentos que desea insertar
Número de documentos a insertar
Opciones para personalizar la operación, o
NULLPuntero al almacenamiento sobrescribible que contendrá los resultados de las operaciones, o
NULLUbicación para un valor de error o.
NULL
Use la siguiente sintaxis para insertar varios documentos:
size_t num_docs = 2;bson_t *docs[num_docs];docs[0] = BCON_NEW("<field name>", BCON_UTF8("<value>"));docs[1] = BCON_NEW("<field name>", BCON_UTF8("<value>"));
bson_error_t error;if (!mongoc_collection_insert_many(collection, (const bson_t **) docs, num_docs, NULL, NULL, &error)) { fprintf(stderr, "Insert many operation failed: %s\n", error.message);}
bson_destroy(docs[0]);bson_destroy(docs[1]);El siguiente ejemplo inserta dos documentos en la colección restaurants:
size_t num_docs = 2;bson_t *docs[num_docs];docs[0] = BCON_NEW("name", BCON_UTF8("Mongo's Burgers"));docs[1] = BCON_NEW("name", BCON_UTF8("Mongo's Pizza"));
bson_error_t error;if (!mongoc_collection_insert_many(collection, (const bson_t **) docs, num_docs, NULL, NULL, &error)) { fprintf(stderr, "Insert many operation failed: %s\n", error.message);}
bson_destroy(docs[0]);bson_destroy(docs[1]);Modificar el comportamiento de inserción
Puedes modificar el comportamiento de las funciones mongoc_collection_insert_one() y mongoc_collection_insert_many() pasando un documento BSON que especifique los valores de las opciones. La siguiente tabla describe algunas opciones que se pueden configurar en el documento:
Opción | Descripción |
|---|---|
| Si se establece en |
| Establece el nivel de confirmación de escritura (write concern) para la operación. |
| Si se establece en |
| Un comentario para adjuntar a la operación. Para obtener más información, consulte la guía insertar campos de comando en el manual de MongoDB Server. |
Ejemplo
El siguiente código utiliza la función mongoc_collection_insert_many() para insertar tres nuevos documentos en una colección. Dado que el campo bypassDocumentValidation está configurado como true, esta operación de inserción omite la validación a nivel de documento:
size_t num_docs = 3;bson_t *docs[num_docs];docs[0] = BCON_NEW("name", BCON_UTF8("Mongo's Burgers"));docs[1] = BCON_NEW("name", BCON_UTF8("Mongo's Pizza"));docs[2] = BCON_NEW("name", BCON_UTF8("Mongo's Tacos"));
bson_t opts;bson_init(&opts);bson_append_bool(&opts, "bypassDocumentValidation", -1, true);
bson_error_t error;if (!mongoc_collection_insert_many(collection, (const bson_t **) docs, num_docs, &opts, NULL, &error)) { fprintf(stderr, "Insert many operation failed: %s\n", error.message);}
bson_destroy(docs[0]);bson_destroy(docs[1]);bson_destroy(docs[2]);bson_destroy(&opts);Información Adicional
Documentación de la API
Para aprender más sobre alguna de las funciones tratadas en esta guía, consulta la siguiente documentación de la API: