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 9/week @ 2024-03-30 3/week @ 2024-04-06

每月下载量 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