Insira vários documentos
Você pode inserir vários documentos em uma coleção chamando o métodoinsert_many() em uma Collection
instância.
Passe um vetor contendo um ou mais documento para o método insert_many()
para inseri-los na sua collection. Esses documentos devem ser instâncias do tipo com o qual você parametrizou sua instância Collection
. Por exemplo, se você parametrizou sua collection com a estrutura MyStruct
, passe um vetor de instâncias MyStruct
como parâmetro para o método insert_many()
.
Dica
Para inserir um único documento, considere usar o insert_one() no lugar. Para obter um exemplo de código executável que usa esse método, consulte o exemplo de uso Inserir um documento .
O insert_many()
método retorna um InsertManyResult tipo que referencia os _id
valores dos documentos inseridos.
Para saber mais sobre como inserir documento em uma collection, consulte o guia Inserir documento .
Exemplo
Este exemplo insere vários documentos na collection restaurants
do banco de banco de dados sample_restaurants
. O exemplo insere documentos que têm name
e cuisine
valores de campo passando um vetor de documentos para o método insert_many()
.
Você pode inserir estes documentos como instâncias do tipo Document
ou um tipo de dados personalizado. Para especificar qual tipo de dados representa os dados da coleção, execute as seguintes ações nas linhas realçadas:
Para acessar e inserir documentos de coleção como documentos BSON, substitua o parâmetro de tipo
<T>
por<Document>
e o espaço reservado<struct or doc>
porinsert_docs
.Para acessar e inserir documentos de coleção como instâncias da estrutura
Restaurant
, substitua o parâmetro de tipo<T>
por<Restaurant>
e o espaço reservado<struct or doc>
porinsert_structs
. A estruturaRestaurant
é definida no topo do arquivo de código.
Selecione a aba Asynchronous ou Synchronous para ver o código correspondente para cada tempo de execução:
use mongodb::{ bson::{doc, Document}, Client, Collection }; use serde::{ Deserialize, Serialize }; struct Restaurant { name: String, cuisine: String, } async fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let client = Client::with_uri_str(uri).await?; // Replace <T> with the <Document> or <Restaurant> type parameter let my_coll: Collection<T> = client .database("sample_restaurants") .collection("restaurants"); let insert_docs = vec! [ doc! { "name": "While in Kathmandu", "cuisine": "Nepalese", }, doc! { "name": "Cafe Himalaya", "cuisine": "Nepalese", } ]; let insert_structs = vec! [ Restaurant { name: "While in Kathmandu".to_string(), cuisine: "Nepalese".to_string(), }, Restaurant { name: "Cafe Himalaya".to_string(), cuisine: "Nepalese".to_string(), } ]; // Replace <structs or docs> with the insert_structs or insert_docs variable let insert_many_result = my_coll.insert_many(<structs or docs>).await?; println!("Inserted documents with _ids:"); for (_key, value) in &insert_many_result.inserted_ids { println!("{}", value); } Ok(()) }
Inserted documents with _ids: ObjectId("...") ObjectId("...")
use mongodb::{ bson::{doc, Document}, sync::{Client, Collection} }; use serde::{ Deserialize, Serialize }; struct Restaurant { name: String, cuisine: String, } fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let client = Client::with_uri_str(uri)?; // Replace <T> with the <Document> or <Restaurant> type parameter let my_coll: Collection<T> = client .database("sample_restaurants") .collection("restaurants"); let insert_docs = vec! [ doc! { "name": "While in Kathmandu", "cuisine": "Nepalese", }, doc! { "name": "Cafe Himalaya", "cuisine": "Nepalese", } ]; let insert_structs = vec! [ Restaurant { name: "While in Kathmandu".to_string(), cuisine: "Nepalese".to_string(), }, Restaurant { name: "Cafe Himalaya".to_string(), cuisine: "Nepalese".to_string(), } ]; // Replace <structs or docs> with the insert_structs or insert_docs variable let insert_many_result = my_coll.insert_many(<structs or docs>).run()?; println!("Inserted documents with _ids:"); for (_key, value) in &insert_many_result.inserted_ids { println!("{}", value); } Ok(()) }
Inserted documents with _ids: ObjectId("...") ObjectId("...")