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 直接)

MIT 许可

75KB
1.5K SLoC

MongoDB GridFS Rust驱动

Crates.io docs.rs

此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 contentTypealiases 未实现
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