Crate mongodb_gridfs

source ·
Expand description

This crate provides an implementation of Mongo GridFS on the top of mongodb’s crate. This implementation only use the async/await version of mongodb.

From https://github.com/mongodb/specifications/blob/master/source/gridfs/gridfs-spec.rst

GridFS is a convention drivers use to store and retrieve BSON binary data (type “\x05”) that exceeds MongoDB’s BSON-document size limit of 16 MiB. When this data, called a user file, is written to the system, GridFS divides the file into chunks that are stored as distinct documents in a chunks collection. To retrieve a stored file, GridFS locates and returns all of its component chunks. Internally, GridFS creates a files collection document for each stored file. Files collection documents hold information about stored files, and they are stored in a files collection.

Examples

Uploading a document:

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?;

Downloading a document:

use tokio_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();

Features

The following features are propagated to mongodb:

  • default
  • async-std-runtime
  • tokio-runtime

Code Status

FeatureStatusNotes
GridFSUploadOptionsDONEcontentType and aliases are not implemented
GridFSBucketOptionDONEconcerns not used when ensuring indexes
GridFSFindOptionsDONE
GridFSDownloadByNameOptionsTODO
GridFSBucketDONE
GridFSBucket . open_upload_streamDONE
GridFSBucket . open_upload_stream_with_id
GridFSBucket . upload_from_streamNONo Implementation planned
GridFSBucket . upload_from_stream_with_idNONo Implementation planned
GridFSBucket . open_download_streamDONE
GridFSBucket . download_to_streamNONo Implementation planned
GridFSBucket . deleteDONE
GridFSBucket . findDONE
GridFSBucket . renameDONE
GridFSBucket . dropDONE
GridFSBucket . open_download_stream_by_name
GridFSBucket . download_to_stream_by_name
indexesDONE

Re-exports

Modules

Enums