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

0.6.0 2019年7月7日
0.5.0 2019年7月4日
0.4.0 2019年6月19日
0.3.3 2019年3月16日
0.0.5 2018年12月25日

#64#nosql

每月下载量:43
avocado 中使用

MIT 许可证

50KB
1K 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

用法

  • 请参阅上面的在线文档 https://docs.rs/avocado,或本地打开它

  • 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:: 特性上的 options() 方法中添加一个 &self 参数来修复 #2

v0.3.3

  • 修复了与 Uuid::from_random_bytes() 相关的弃用警告。
  • 捕获了MongoDB客户端的 Cursor API中传递的错误。

v0.3.2

  • DocumentExt 添加了 remove_inner_doc() 方法。这使得在 transform() 中从嵌套的 Document 中删除变得简单。
  • 修复了向集合中插入0个实体失败的错误。
  • 修复了由 DocumentExt::remove_*() 方法生成的错误信息中键和值类型的错误排序。

v0.3.1

  • 为了方便和直观地实现 transform(raw: Document) -> Result<Bson> 方法,向预定义中添加了 DocumentExt 特性。
  • 希望修复了代码,现在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)] 过程宏的错误信息的测试需要先运行 cargo clean,否则编译将会因 E0464 失败。

因此,推荐运行测试的方式是

cargo clean && cargo test

待办

  • weights 属性添加到文本索引中
  • 添加迁移
  • #29661 稳定后,将 Doc::Id 默认添加到 ObjectIdQuery::Output 以及 FindAndUpdate::OutputT

依赖

~2MB
~47K SLoC