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 |
| 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: