#mongo-db #embedded-database #persistence #in-memory #api #separate #file

bin+lib notmongo

进程内,类似 MongoDB 的 API 的糟糕数据库

3 个版本

0.1.7 2023 年 7 月 29 日
0.1.6 2023 年 7 月 29 日
0.1.5 2023 年 7 月 29 日

#2735数据库接口

MIT 许可证

86KB
2K SLoC

非 MongoDB

notmongo 是一个简单的嵌入式数据库,当您真的需要 MongoDB,但单独运行数据库不切实际时使用。

所有数据都保存在内存中。通过显式从/到磁盘读取/写入数据来实现持久性。

// Program start: Read the data from a file
let mut db = Database::new_from_json_file("data/database.json", Compression::None)?;

// Get the collection to search in
let collection = db.collection_mut("collection-1");

// Build the query
let find_query = FindQuery::parse_bson(bson::doc!{"foo": "bar"})?;

// Run it
println!("{:?}", collection.find_one(
    &find_query,  // The query to run
    &HashMap::new(),  // Projection
    &HashMap::new()  // Sorting
));

// Store the database back to disk
db.dump_to_json_file(
    "data/database.json", // Path to the output file
    false, // Use relaxed JSON
    true,  // Format the output
    3,   // Keep 3 old versions of the file as backup
    Compression:None
)?;

注意

notmongo 实际上被当作一个 Python 库。由于性能要求,逻辑是用 Rust 实现的,但 Rust 不是这个库的主要目标。

尽管如此,我认为没有理由不能直接从 Rust 使用它,因此有了这个包。

依赖关系

~11MB
~192K SLoC