Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
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 usa la librería Proyecto Reactor para consumir instancias Publisher devueltas por los métodos del driver Reactive Streams de Java. Para obtener más información sobre la biblioteca Project Reactor y cómo utilizarla, consulta Primeros pasos en la documentación de Reactor. Para obtener más información sobre cómo utilizamos los métodos de la librería Project Reactor en esta guía, consulta la guía Guardar 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 agregar un solo documento a una colección de MongoDB, llame al método insertOne() y pase el documento que desea agregar. Luego, pase el resultado insertOne() al método estático Mono.from() de Mono. Mono es una clase de la librería Project Reactor. En los flujos reactivos de Java, los métodos del controlador devuelven instancias frías de Publisher, lo que significa que la operación correspondiente no ocurre a menos que te suscribas al Publisher devuelto. Esta guía utiliza la librería Project Reactor para consumirlos. Para aprender más acerca de Mono, consulta Mono en la documentación del Proyecto 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 agregar varios documentos a una colección de MongoDB, llama al método insertMany() y pasa una lista de los documentos que quieres agregar. Luego, pase el resultado insertMany() al método estático Mono.from() de Mono. Mono es una clase de la librería Project Reactor. En los flujos reactivos de Java, los métodos del controlador devuelven instancias frías de Publisher, lo que significa que la operación correspondiente no ocurre a menos que te suscribas al Publisher devuelto. Esta guía utiliza la librería Project Reactor para consumirlos. Para aprender más acerca de Mono, consulta Mono en la documentación del Proyecto 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, puedes modificar el método insertMany() usando 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