日本の山岳一覧・百名山 API を開発しましたCLICK !

Rust | MongoDBにドキュメントを登録する – insert_one / insert_many

Rust x MogoDB
  • URLをコピーしました!

Rust の MongoDB ドライバーである mongodb を使って、ドキュメント登録処理を実装します。

MongoDBのコレクションにドキュメントを登録する

  1. insert_one:1件のドキュメントを登録する
  2. insert_many:複数のドキュメントを登録する
目次

MongoDB にインサート

MongoDB の設定

今回は以下のデータベースとコネクションを作成した前提で実装します。

  • データベース:sample_db
  • コレクション:users

Cargo.toml

mongodb クレートを使います。

[dependencies]
tokio = "1.20.0"
serde = { version = "1.0", features = ["derive"] }

[dependencies.mongodb]
version = "2.2.2"
default-features = false
features = ["tokio-runtime"]

insert_one

insert_one で1件のドキュメントを登録します。

use mongodb::{Client};
use mongodb::bson::oid::ObjectId;
use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize)]
struct User {
    #[serde(rename = "_id", skip_serializing)]
    id: Option<ObjectId>,
    name: String,
}

#[tokio::main]
async fn main() -> mongodb::error::Result<()> {
    let client = Client::with_uri_str("your connection url string").await?;
    let db = client.database("sample_db");
    let collection = db.collection::<User>("users");

    let new_user = User {
        id: None,
        name: "Patricia Lebsack".to_string()
    };

    let result = collection.insert_one(new_user, None).await?;
    println!("{:?}", result.inserted_id);

    Ok(())
}

以下の警告が出ますが、今回はスルーします。

warning: field is never read: `id`
 --> src/main.rs:8:5
  |
8 |     id: Option<ObjectId>,
  |     ^^^^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(dead_code)]` on by default

insert_many

insert_many を使い、複数のドキュメントを登録します。

use mongodb::{Client};
use mongodb::bson::oid::ObjectId;
use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize)]
struct User {
    #[serde(rename = "_id", skip_serializing)]
    id: Option<ObjectId>,
    name: String,
}

#[tokio::main]
async fn main() -> mongodb::error::Result<()> {
    let client = Client::with_uri_str("your connection url string").await?;
    let db = client.database("sample_db");
    let collection = db.collection::<User>("users");

    let users = vec![
        User {
            id: None,
            name: "Leanne Graham".to_string()
        },
        User {
            id: None,
            name: "Ervin Howell".to_string()
        }
    ];

    let result = collection.insert_many(users, None).await?;
    println!("{:?}", result.inserted_ids);

    Ok(())
}

以下の警告が出ますが、今回はスルーします。

warning: field is never read: `id`
 --> src/main.rs:8:5
  |
8 |     id: Option<ObjectId>,
  |     ^^^^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(dead_code)]` on by default

まとめ

Rust で MongoDB にドキュメントを登録する処理を簡単に実装してみました。

insert_many は Vec を渡すだけでインサートできるので便利ですね。

製品導入する場合は、タイムアウトなどを考慮しないといけないですかね…?

Rust x MogoDB

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!

コメント

コメントする

目次