15个版本 (6个重大更新)

0.6.0 2019年7月7日
0.4.0 2019年6月19日
0.3.3 2019年3月16日
0.0.5 2018年12月15日
0.0.1 2018年7月18日

#2833数据库接口

Download history • Rust 包仓库 9/week @ 2024-03-30 • Rust 包仓库 3/week @ 2024-04-06 • Rust 包仓库

每月下载量 54

MIT许可

135KB
2K SLoC

Avocado,强类型MongoDB驱动程序

Avocado on crates.io Avocado on docs.rs rustc Avocado Download Avocado License Lines of Code Twitter

goto counter unsafe counter fuck counter

用法

  • 请参阅上方的在线文档,或本地打开

  • cargodoc --open

  • 查看examples/文件夹

  • 更多高级信息可以在项目页面找到。

  • schema_validation功能可以启用(默认启用),此时DatabaseExt::empty_collection()方法可用。如果使用此方法创建集合,它将添加JSON模式验证步骤并指定由magnet生成的模式。

  • raw_uuid功能(默认启用)添加了一些有用的扩展方法,使处理UUID(作为_id字段的类型)更加方便。

    如果您在复杂类型的集合中进行大量插入,这可能会有点慢。然而,它动态确保其他用户/驱动程序不能在集合中放入损坏的数据。因此,如果您或其他人从Avocado驱动程序外部访问数据库,这可能更有用。这对于调试Avocado本身也非常有用。

变更日志

v0.6.0

  • 通过添加上下文字典到Error解决#6问题。

v0.5.0

  • 通过向Doc derive proc-macro添加#[options)]属性解决#5问题。

v0.4.0

  • 通过在ops:: traits的options()方法中添加一个&self参数来解决#2问题。

v0.3.3

  • 修复了与Uuid::from_random_bytes()相关的弃用警告。
  • 捕获了一些错误,这些错误错误地通过了MongoDB客户端的Cursor API。

v0.3.2

  • DocumentExt添加了remove_inner_doc()方法。这允许在transform()中轻松链式删除嵌套的Document
  • 修复了向集合插入0个实体时失败的bug。
  • 修复了由DocumentExt::remove_*()方法生成的错误信息中键和值类型的错误排序。

v0.3.1

  • 为方便和惯用实现transform(raw: Document) -> Result<Bson>方法,在预言中添加了DocumentExt trait。
  • 希望修复了代码,现在docs.rs可以处理它了

v0.3.0

  • 为了提高某些Collection方法中的效率,添加了Doc::id()Doc::set_id()方法。
    • 这意味着像Box<Doc>RefCell<Doc>这样的单元素包装器不能再自己实现Doc
  • 添加了Collection::find_one_and_delete()Collection::find_one_and_replace()Collection::find_one_and_update()方法。
  • 添加了更多文档,并澄清/改进了现有文档
  • 添加了更多测试,包括对在#[derive(Doc)]应该失败的情况下的编译时测试,以及测试是否正确允许可选的_id

编译时测试 derive 宏

由于 compiletest_rs 中的一个错误,运行检查 #[derive(Doc)] proc-macro 的错误信息的测试需要先运行 cargo clean,否则编译将会失败,并显示 E0464 错误。

因此,建议的运行测试的方法是

cargo clean && cargo test

待办

  • weights 属性添加到文本索引
  • 添加迁移
  • 一旦 #29661 稳定后,将 Doc::Id 默认添加到 ObjectIdQuery::OutputFindAndUpdate::Output 中,并将 T

依赖项

约 16MB
约 315K SLoC