複数のドキュメントの挿入
インスタンスで insert_many() メソッドを呼び出すことで、複数のドキュメントをコレクションに挿入できます。Collection
1 つ以上のドキュメントを含むベクトルをinsert_many()
メソッドに渡して、コレクションに挿入します。 These documents must be instances of the type that you parameterized your Collection
instance with. たとえば、コレクションをMyStruct
構造体でパラメーター化した場合は、 MyStruct
インスタンスのベクトルをinsert_many()
メソッドのパラメーターとして渡します。
Tip
単一ドキュメントを挿入するには、 insert_one() メソッド の使用を検討してください 使用して複数のドキュメントを挿入できます。このメソッドを使用する実行可能なコード例については、 ドキュメントの挿入 の使用例を参照してください。
insert_many()
メソッドは InsertManyResult _id
を返します 挿入されたドキュメントの 値を参照する タイプ。
コレクションにドキュメントを挿入する方法の詳細については、「ドキュメントの挿入 」ガイドを参照してください。
例
この例では、 sample_restaurants
データベースの restaurants
コレクションに複数のドキュメントを挿入します。この例では、ドキュメントのベクトルを insert_many()
メソッドに渡すことで、name
と cuisine
フィールド値を持つドキュメントを挿入します。
これらのドキュメントは、Document
型またはカスタムデータ型のインスタンスとして挿入できます。コレクションのデータを表すデータ型を指定するには、強調表示された行に対して次のアクションを実行します。
コレクションドキュメントをBSONドキュメントとしてアクセスして挿入するには、
<T>
型パラメータを<Document>
に置き換え、<struct or doc>
プレースホルダーをinsert_docs
に置き換えます。Restaurant
構造体のインスタンスとしてコレクションドキュメントにアクセスして挿入するには、<T>
型パラメータを<Restaurant>
に置き換え、<struct or doc>
プレースホルダーをinsert_structs
に置き換えます。Restaurant
構造体は、コードファイルの上部で定義されています。
AsynchronousSynchronous各実行時に対応するコードを表示するには、 タブまたは タブを選択します。
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("...")