10个版本
0.2.7 | 2023年10月30日 |
---|---|
0.2.5 | 2023年3月22日 |
0.2.4 | 2023年2月16日 |
0.2.3 | 2023年1月27日 |
0.1.1 | 2021年5月18日 |
#374 在 数据库接口
32 每月下载
在 4 个Crate中使用 (3 直接)
75KB
1.5K SLoC
MongoDB GridFS Rust驱动
此crate在mongodb的crate之上提供了Mongo GridFS的实现。此实现仅使用mongodb的async/await版本。
来自 https://github.com/mongodb/specifications/blob/master/source/gridfs/gridfs-spec.rst
GridFS是驱动程序用于存储和检索超出MongoDB的BSON文档大小限制(16 MiB)的BSON二进制数据(类型“\x05”)的一种约定。当这些数据(称为用户文件)写入系统时,GridFS将文件分割成多个块,这些块作为独立的文档存储在chunks集合中。要检索存储的文件,GridFS会定位并返回所有组成部分的块。内部,GridFS为每个存储的文件创建一个files集合文档。files集合文档包含有关存储文件的信息,并存储在files集合中。
示例
上传文档
use mongodb_gridfs::{options::GridFSBucketOptions, GridFSBucket};
let mut bucket = GridFSBucket::new(db.clone(), Some(GridFSBucketOptions::default()));
let id = bucket
.upload_from_stream("test.txt", "stream your data here".as_bytes(), None)
.await?;
下载文档
use futures::stream::StreamExt;
use mongodb_gridfs::{options::GridFSBucketOptions, GridFSBucket, GridFSError};
let bucket = GridFSBucket::new(db.clone(), Some(GridFSBucketOptions::default()));
let mut cursor = bucket.open_download_stream(id).await?;
let buffer = cursor.next().await.unwrap();
功能
以下功能传递给mongodb
- 默认
- async-std-runtime
- tokio-runtime
代码状态
功能 | 状态 | 备注 |
---|---|---|
GridFSUploadOptions | DONE | contentType 和 aliases 未实现 |
GridFSBucketOption | DONE | 在确保索引时未使用concerns |
GridFSFindOptions | DONE | |
GridFSDownloadByNameOptions | TODO | |
GridFSBucket | DONE | |
GridFSBucket . open_upload_stream | DONE | |
GridFSBucket . open_upload_stream_with_id | ||
GridFSBucket . upload_from_stream | NO | 未计划实现 |
GridFSBucket . upload_from_stream_with_id | NO | 未计划实现 |
GridFSBucket . open_download_stream | DONE | |
GridFSBucket . download_to_stream | NO | 未计划实现 |
GridFSBucket . delete | DONE | |
GridFSBucket . find | DONE | |
GridFSBucket . rename | DONE | |
GridFSBucket . drop | DONE | 在drop过程中未使用 DropCollectionOptions |
GridFSBucket . open_download_stream_by_name | ||
GridFSBucket . download_to_stream_by_name | ||
索引 | DONE |
依赖关系
~24–38MB
~707K SLoC