Overview
En esta guía, puede aprender a utilizar el controlador Scala 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. Puedes realizar una operación de inserción mediante los siguientes métodos:
insertOne()para insertar un solo documentoinsertMany()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 muestra de Atlas. Para acceder a esta colección desde su aplicación Scala, cree un MongoClient que se conecte a un clúster de Atlas y asigne los siguientes valores a las variables database collection y:
val database: MongoDatabase = mongoClient.getDatabase("sample_restaurants") val collection: MongoCollection[Document] = database.getCollection("restaurants")
Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, 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
BsonObjectIdú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.
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 añadir un solo documento a una colección de MongoDB, llama al método insertOne() y pasa el documento que quieres insertar.
El siguiente ejemplo inserta un documento en la colección restaurants:
val doc: Document = Document("name" -> "Neighborhood Bar & Grill", "borough" -> "Queens") val observable: Observable[InsertOneResult] = collection.insertOne(doc) observable.subscribe(new Observer[InsertOneResult] { override def onNext(result: InsertOneResult): Unit = println(result) override def onError(e: Throwable): Unit = println("Failed: " + e.getMessage) override def onComplete(): Unit = println("Completed") })
AcknowledgedInsertOneResult{insertedId=BsonObjectId{value=...}} Completed
Inserta varios documentos
Para agregar varios documentos a una colección MongoDB, llame a la función insertMany() y pase una lista de documentos que desea insertar.
El siguiente ejemplo inserta dos documentos en la colección restaurants:
val docs: Seq[Document] = Seq( Document("name" -> "Metropolitan Cafe", "borough" -> "Queens"), Document("name" -> "Yankee Bistro", "borough" -> "Bronx") ) val observable: Observable[InsertManyResult] = collection.insertMany(docs) observable.subscribe(new Observer[InsertManyResult] { override def onNext(result: InsertManyResult): Unit = println(result) override def onError(e: Throwable): Unit = println("Failed: " + e.getMessage) override def onComplete(): Unit = println("Completed") })
AcknowledgedInsertManyResult{insertedIds={0=BsonObjectId{value=...}, 1=BsonObjectId{value=...}}} Completed
Modificar el comportamiento de inserción
El método insertOne() acepta opcionalmente un parámetro InsertOneOptions que establece opciones para configurar la operación de inserción. Si no se especifica ninguna opción, el controlador realiza la operación de inserción con la configuración predeterminada. Pase las opciones como último parámetro al método insertOne().
La siguiente tabla describe los métodos de configuración que puede utilizar para configurar una instancia InsertOneOptions:
Método | Descripción |
|---|---|
| If set to true, allows the driver to ignore
document-level validation.Defaults to false. |
| Sets a comment to attach to the operation. For more information, see the insert command
fields guide in the
MongoDB Server manual for more information. |
Puede configurar los ajustes anteriores en el método insertMany() configurando una instancia InsertManyOptions. También puede usar el método setter ordered() para especificar el orden en que el controlador inserta documentos en MongoDB. Pase las opciones como último parámetro al método insertMany().
Ejemplo
El siguiente código utiliza el método insertMany() para insertar tres documentos nuevos en una colección. Dado que la opción bypassDocumentValidation está habilitada, esta operación de inserción omite la validación a nivel de documento:
val docs: Seq[Document] = Seq( Document("name" -> "One Night's Delight", "borough" -> "Queens"), Document("name" -> "Second Street Pub", "borough" -> "Manhattan"), Document("name" -> "Triple Crown Diner", "borough" -> "Brooklyn") ) val opts: InsertManyOptions = InsertManyOptions().bypassDocumentValidation(true) val observable: Observable[InsertManyResult] = collection.insertMany(docs, opts) observable.subscribe(new Observer[InsertManyResult] { override def onNext(result: InsertManyResult): Unit = println(result) override def onError(e: Throwable): Unit = println("Failed: " + e.getMessage) override def onComplete(): Unit = println("Completed") })
AcknowledgedInsertManyResult{insertedIds={0=BsonObjectId{value=...}, 1=BsonObjectId{value=...}, 2=BsonObjectId{value=...}}} Completed
Información Adicional
Para obtener más información sobre cualquiera de los métodos analizados en esta guía, consulte la siguiente documentación de API: