Overview
En esta guía, puedes aprender cómo realizar un inserción.
Datos de muestra
El ejemplo en esta guía utiliza lo siguiente Plant struct como modelo para documentos en la colección plants:
type Plant struct { Species string PlantID int32 `bson:"plant_id"` Height float64 }
Para ejecutar el ejemplo de esta guía, carga los datos de muestra en la colección db.plants con el siguiente snippet:
coll := client.Database("db").Collection("plants") docs := []interface{}{ Plant{Species: "Polyscias fruticosa", PlantID: 1, Height: 27.6}, Plant{Species: "Polyscias fruticosa", PlantID: 2, Height: 34.9}, Plant{Species: "Ledebouria socialis", PlantID: 1, Height: 11.4}, } result, err := coll.InsertMany(context.TODO(), docs)
Cada documento contiene una descripción de una planta individual que incluye la especie, el ID de la planta y la altura correspondiente a los campos species, plant_id y height en cada documento.
Tip
Bases de datos y colecciones inexistentes
Si la base de datos y la colección necesarias no existen cuando realizas una operación de guardar, el servidor las crea implícitamente.
Inserción
Las aplicaciones utilizan operaciones de inserción y actualización para almacenar y modificar datos. A veces, debes elegir entre una operación de inserción y una de actualización según si el documento existe. MongoDB simplifica esta decisión para nosotros con una opción de inserción.
Una inserción realiza una de las siguientes acciones:
Actualiza documentos que coinciden con tu filtro de query
Inserta un nuevo documento si no hay coincidencias con tu filtro de query
Se puede especificar una inserción pasando true al método SetUpsert() en las opciones de los siguientes métodos de operaciones de escritura:
UpdateOne()UpdateByID()UpdateMany()ReplaceOne()FindOneAndUpdate()FindOneAndReplace()
Tip
Si no se especifica un inserción, no ocurre ningún cambio en la operación de escritura cuando cero documentos coinciden con el filtro de query. Esto es equivalente a pasar false al método SetUpsert().
Ejemplo
El siguiente ejemplo realiza las siguientes acciones:
Coincide con documentos donde el
specieses "Ledebouria socialis" y elplant_ides3Actualiza el
heightdel documento coincidente a8.3Inserta este documento si no encuentra coincidencias con el filtro de query.
filter := bson.D{{"species", "Ledebouria socialis"}, {"plant_id", 3}} update := bson.D{{"$set", bson.D{{"species", "Ledebouria socialis"}, {"plant_id", 3}, {"height", 8.3}}}} opts := options.Update().SetUpsert(true) result, err := coll.UpdateOne(context.TODO(), filter, update, opts) if err != nil { panic(err) } fmt.Printf("Number of documents updated: %v\n", result.ModifiedCount) fmt.Printf("Number of documents upserted: %v\n", result.UpsertedCount)
Number of documents updated: 0 Number of documents upserted: 1
Si consultas la colección plants para ver todos los documentos, puedes observar que, dado que el filtro de query no coincidió con ningún documento, se insertó un nuevo documento con los campos especificados:
{"species":"Polyscias fruticosa","plant_id":1,"height":27.6} {"species":"Polyscias fruticosa","plant_id":2,"height":34.9} {"species":"Ledebouria socialis","plant_id":1,"height":11.4} {"species":"Ledebouria socialis","plant_id":3,"height":8.3}
Información Adicional
Para aprender más sobre las operaciones mencionadas, consulte las siguientes guías:
Documentación de la API
Para obtener más información sobre cualquiera de los métodos o tipos mencionados en esta guía, consulta la siguiente Documentación API: