Overview
En esta guía, puede aprender a utilizar el controlador C para agregar documentos a una colección MongoDB realizando operaciones de inserción.
Una operación de inserción inserta uno o más documentos en una colección de MongoDB. Puede realizar una operación de inserción mediante las siguientes funciones:
mongoc_collection_insert_one()Función para insertar un solo documentomongoc_collection_insert_many()Función para insertar uno o más documentos
Datos de muestra
Los ejemplos de esta guía utilizan la colección restaurants en la base de datos sample_restaurants de la Conjuntos de datos de ejemplo de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de ejemplo, consulte la guía de introducción a MongoDB.
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:
Configure usted mismo el campo
_idpara cada documento, asegurándose de que cada valor sea único.Deje que el controlador genere automáticamente valores
bson_oid_túnicos para cada campo_iddel documento.
A menos que pueda garantizar la singularidad, recomendamos dejar que el controlador genere automáticamente valores _id.
Nota
Los valores duplicados _id violan las restricciones de índice único, lo que hace que el controlador devuelva un error mongoc_bulkwriteexception_t.
Para obtener más información sobre el _id campo, consulte la guía Índices únicos en el manual de MongoDB Server.
Para obtener más información sobre la estructura y las reglas de los documentos, consulte la guía Documentos en el manual del servidor MongoDB.
Inserta un documento
Para agregar un solo documento a una colección MongoDB, llame a la función mongoc_collection_insert_one() y pase los siguientes parámetros:
Colección en la que estás insertando documentos
Documento para insertar
Opciones para personalizar el funcionamiento, o
NULLPuntero a un almacenamiento sobrescribible que contendrá los resultados de la operación, o
NULLUbicación de un valor de error, o
NULL
Utilice 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ás insertando documentos
Matriz de punteros a los documentos que desea insertar
Número de documentos a insertar
Opciones para personalizar el funcionamiento, o
NULLPuntero a un almacenamiento sobrescribible que contendrá los resultados de la operación, o
NULLUbicación de un valor de error, o
NULL
Utilice 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
Puede 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 puede configurar en el documento:
Opción | Descripción |
|---|---|
| If set to true, allows the write operation to opt out of
document-level validation.Defaults to false.Type: bool |
| Sets the write concern for the operation. Defaults to the write concern of the namespace. Type: mongoc_write_concern_t |
| If set to true, the operation stops inserting documents when one insert
fails. If false, the operation continues to insert the remaining documents
when one insert fails. You cannot pass this option to the mongoc_collection_insert_one()
function.Defaults to true.Type: bool |
| A comment to attach to the operation. For more information, see the insert command
fields guide in the
MongoDB Server manual. Type: bson_value_t |
Ejemplo
El siguiente código utiliza la función mongoc_collection_insert_many() para insertar tres documentos nuevos en una colección. Dado que el campo bypassDocumentValidation está establecido en 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: