Docs Menu
Docs Home
/ /
/ / /

Insertar documentos

En esta guía, puede aprender a utilizar el controlador Java Reactive Streams 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 utilizando insertOne() o métodos insertMany().

Los ejemplos de esta guía utilizan la colección sample_restaurants.restaurants de Conjuntos de datos de muestra del Atlas.

Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulte Tutorial de introducción.

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 ObjectId únicos para cada documento _id. Si no establece manualmente un valor _id para un documento, el controlador rellena el campo con un ObjectId.

A menos que pueda garantizar la singularidad, recomendamos dejar que el controlador genere automáticamente valores _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 _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.

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 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 usar la clase InsertOneOptions, construya una nueva instancia de la clase y luego invoque uno o más de sus métodos para modificar la operación de inserción. Puede encadenar estas llamadas a métodos. Para modificar el comportamiento de la operación de inserción, pase la instancia de la clase y las llamadas a métodos encadenadas como segundo argumento del método insertOne().

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

Puede usar 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 obtener ejemplos de código ejecutable sobre cómo insertar documentos con el controlador Java Reactive Streams, consulte la guía Escribir 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