Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Insertar documentos

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 documento

  • mongoc_collection_insert_many() función para insertar uno o más documentos

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.

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 _id para cada documento tú mismo, asegurándote de que cada valor sea único.

  • Permite que el driver genere automáticamente valores únicos de bson_oid_t para cada campo _id del 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.

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 NULL

  • Puntero al almacenamiento sobrescribible que contendrá los resultados de las operaciones, o NULL

  • Ubicació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);

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 NULL

  • Puntero al almacenamiento sobrescribible que contendrá los resultados de las operaciones, o NULL

  • Ubicació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]);

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

bypassDocumentValidation

Si se establece en true, permite que la operación de guardar se excluya de la validación a nivel de documento.
Por defecto, false.
Tipo: bool

writeConcern

Establece el nivel de confirmación de escritura (write concern) para la operación.
Por defecto, el nivel de confirmación de escritura (write concern) del namespace.
Tipo: mongoc_write_concern_t

ordered

Si true se establece en, la operación deja de insertar documentos cuando falla una inserción. Si se establece en,false la operación continúa insertando los documentos restantes cuando falla una inserción. No se puede pasar esta opción a la mongoc_collection_insert_one() función.
trueEl
valor predeterminado es. Tipo: bool

comment

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.
Tipo: bson_value_t

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);

Para aprender más sobre alguna de las funciones tratadas en esta guía, consulta la siguiente documentación de la API: