Insert
To insert a document, invoke the insert
method.
After the document is inserted, an InsertResult
struct will be returned.
If you don't provide a primary key, the database will create one for you and obtain it in the result.
You can also use the insert_many
method to insert multiple documents at once.
Insert one item
Insert a struct which implements serde::Serialize
;
use polodb_core::Database;
use serde::{Serialize, Deserialize};
#[derive(Debug, Serialize, Deserialize)]
struct Book {
title: String,
author: String,
}
let db = Database::open_file(db_path)?;
let collection = db.collection("books");
collection.insert_one(Book {
title: "The Three-Body Problem".to_string(),
author: "Liu Cixin".to_string(),
})?;
Insert many items
use polodb_core::bson::{Document, doc};
use serde::{Deserialize, Serialize};
// Get a handle to a collection of `Book`.
let typed_collection = db.collection::<Document>("books");
let docs = vec![
doc! { "title": "1984", "author": "George Orwell" },
doc! { "title": "Animal Farm", "author": "George Orwell" },
doc! { "title": "The Great Gatsby", "author": "F. Scott Fitzgerald" },
];
// Insert some documents into the "mydb.books" collection.
typed_collection.insert_many(docs)?;
A Collection can be parameterized with any type that implements the Serialize and Deserialize traits from the serde crate, not just Document:
use serde::{Deserialize, Serialize};
// Get a handle to a collection of `Book`.
let typed_collection = db.collection::<Book>("books");
let books = vec![
Book {
title: "The Grapes of Wrath".to_string(),
author: "John Steinbeck".to_string(),
},
Book {
title: "To Kill a Mockingbird".to_string(),
author: "Harper Lee".to_string(),
},
];
// Insert the books into "mydb.books" collection, no manual conversion to BSON necessary.
typed_collection.insert_many(books)?;