Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
/ / /

Insertar documentos

En esta guía puedes aprender a utilizar el controlador de Java Reactive Streams para añadir documentos a una colección de MongoDB mediante la realización de 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 utilizando la insertOne() o los métodos insertMany().

Los ejemplos en esta guía utilizan la colección sample_restaurants.restaurants de la 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 el Comenzar tutorial.

Importante

Proyecto Reactor librería

Esta guía utiliza la biblioteca Project Reactor para consumir Publisher las instancias devueltas por los métodos del controlador Java Reactive Streams. Para obtener más información sobre la biblioteca Project Reactor y cómo usarla, consulte la sección "Introducción" en la documentación de Reactor. Para obtener más información sobre cómo usamos los métodos de la biblioteca Project Reactor en esta guía, consulte la guía "Escribir datos en MongoDB".

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:

  • Uno mismo puede configurar este campo para cada documento, asegurando que el valor de cada campo _id sea único.

  • Puede permitir que el controlador genere automáticamente valores únicos ObjectId para cada documento _id. Si no estableces manualmente un valor de _id para un documento, el controlador rellena el campo con un ObjectId.

A menos que pueda garantizar la exclusividad, recomendamos dejar que el controlador genere automáticamente los valores de _id.

Nota

Los valores duplicados de _id violan las restricciones de índice único, lo que provoca que el controlador devuelva un WriteError de insertOne() o un BulkWriteError de insertMany().

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 añadir un solo documento a una colección de MongoDB, llame al insertOne() método y pase el documento que desea añadir. A continuación, pase el insertOne() resultado al método estático Mono.from() Monodesde. Mono es una clase de la biblioteca Project Reactor. En Java Reactive Streams, los métodos del controlador devuelven Publisher instancias frías, lo que significa que la operación correspondiente no se realiza a menos que se suscriba a la Publisher devuelta. Esta guía utiliza la biblioteca Project Reactor para consumirlas. Para obtener más información Mono sobre, consulte Mono en la documentación de Project Reactor.

El siguiente ejemplo utiliza el método insertOne() para insertar un documento en el que el valor de name es "Mongo's Burgers" en la colección restaurants:

Document document = new Document("name", "Mongo's Burgers");
Publisher<InsertOneResult> insertPublisher = restaurants.insertOne(document);
Mono.from(insertPublisher).block();

Para añadir varios documentos a una colección de MongoDB, llame al insertMany() método y pase la lista de documentos que desea añadir. A continuación, pase el insertMany() resultado al método estático Mono.from() Monodesde. Mono es una clase de la biblioteca Project Reactor. En Java Reactive Streams, los métodos del controlador devuelven Publisher instancias frías, lo que significa que la operación correspondiente no se realiza a menos que se suscriba a la Publisher devuelta. Esta guía utiliza la biblioteca Project Reactor para consumirlas. Para obtener más información Mono sobre, consulte Mono en la documentación de Project Reactor.

El siguiente ejemplo utiliza el método insertMany() para insertar una lista de documentos en la colección restaurants:

Document doc1 = new Document("name", "Mongo's Pizza");
Document doc2 = new Document("name", "Mongo's Coffee");
List<Document> documents = Arrays.asList(doc1, doc2);
Publisher<InsertManyResult> insertPublisher = restaurants.insertMany(documents);
Mono.from(insertPublisher).block();

La clase InsertOneOptions contiene métodos que modifican el comportamiento del método insertOne(). Para utilizar la clase InsertOneOptions, debes construir una nueva instancia de la clase y luego llamar a uno o más de sus métodos para modificar la operación de inserción. Puede encadenar estas llamadas de método juntas. Para modificar el comportamiento de la operación de inserción, pasa la instancia de la clase y las llamadas encadenadas de métodos como segundo argumento al método insertOne().

De manera similar, puede modificar el método insertMany() utilizando la clase InsertManyOptions.

Se pueden emplear los siguientes métodos en la clase InsertOneOptions para modificar el método insertOne(). Todos los métodos son opcionales.

Método
Descripción

bypassDocumentValidation (Boolean bypassDocumentValidation)

If set to True, allows the write to opt out of document-level validation.
Defaults to False.

toString()

If used, returns a string representation of the object.

comment(BsonValue comment)

A comment to attach to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.

La clase InsertManyOptions contiene los métodos anteriores, así como el siguiente método ordered():

Método
Descripción

ordered(Boolean ordered)

If set to True, the driver sends documents to the server in the order provided. If an error occurs, the driver and server cancel all remaining insert operations.
Defaults to True.

El siguiente código utiliza el método insertMany() para insertar nuevos documentos en la colección restaurants. También configura la opción bypassDocumentValidation(true) para omitir la validación a nivel de documento.

Document doc1 = new Document("name", "Mongo's Burgers");
Document doc2 = new Document("name", "Mongo's Pizza");
Document doc3 = new Document("name", "Mongo's Coffee");
List<Document> documents = Arrays.asList(doc1, doc2, doc3);
Publisher<InsertManyResult> insertPublisher =
restaurants.insertMany(documents,
new InsertManyOptions().bypassDocumentValidation(true));
Mono.from(insertPublisher).block();

Para ejemplos de código ejecutables de inserción de documentos con el driver Java Reactive Streams, consulte la guía Guardar datos en MongoDB.

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API:

Volver

Escritura de datos

En esta página