| Crates.io | nitrite |
| lib.rs | nitrite |
| version | 0.1.0 |
| created_at | 2025-12-16 19:46:15.889664+00 |
| updated_at | 2025-12-16 19:46:15.889664+00 |
| description | An embedded NoSQL document database for Rust with collections, repositories, indexing, and ACID transactions |
| homepage | |
| repository | https://github.com/nitrite/nitrite-rust |
| max_upload_size | |
| id | 1988524 |
| size | 2,742,951 |
Nitrite is an embedded NoSQL document database for Rust.
use nitrite::nitrite::Nitrite;
use nitrite::filter::field;
use nitrite::doc;
// Create an in-memory database
let db = Nitrite::builder()
.open_or_create(None, None)
.expect("Failed to create database");
// Get a collection
let collection = db.collection("users").unwrap();
// Insert a document
collection.insert(doc!{"name": "John", "age": 30}).unwrap();
// Query documents
let cursor = collection.find(field("name").eq("John")).unwrap();
for doc in cursor {
println!("{:?}", doc);
}
// Close the database
db.close().unwrap();
use nitrite::index::{unique_index, non_unique_index};
// Create a unique index
collection.create_index(vec!["email"], &unique_index()).unwrap();
// Create a non-unique index
collection.create_index(vec!["department"], &non_unique_index()).unwrap();
use nitrite::filter::field;
// Equality
field("name").eq("John")
// Comparison
field("age").gt(18)
field("age").gte(21)
field("age").lt(65)
field("age").lte(60)
// Logical operators
field("active").eq(true).and(field("age").gte(18))
field("role").eq("admin").or(field("role").eq("moderator"))
Nitrite supports pluggable storage backends:
InMemoryStoreModule for testing and ephemeral datanitrite-fjall-adapter cratenitrite-spatial cratenitrite-tantivy-fts crateApache License 2.0