public class GridFS extends Object
Implementation of GridFS - a specification for storing and retrieving files that exceed the BSON-document size limit of 16MB.
Instead of storing a file in a single document, GridFS divides a file into parts, or chunks, and stores each of those chunks as a separate document. By default GridFS limits chunk size to 255k. GridFS uses two collections to store files. One collection stores the file chunks, and the other stores file metadata.
When you query a GridFS store for a file, the driver or client will reassemble the chunks as needed. You can perform range queries on files stored through GridFS. You also can access information from arbitrary sections of files, which allows you to "skip" into the middle of a video or audio file.
GridFS is useful not only for storing files that exceed 16MB but also for storing any files for which you want access without having to load the entire file into memory. For more information on the indications of GridFS, see MongoDB official documentation.
Modifier and Type | Field | Description |
---|---|---|
static String |
DEFAULT_BUCKET |
Bucket to use for the collection namespaces
|
static int |
DEFAULT_CHUNKSIZE |
File's chunk size
|
static long |
MAX_CHUNKSIZE |
Deprecated.
You can calculate max chunkSize with a similar formula
Mongo.getMaxBsonObjectSize() - 500*1000.
Please ensure that you left enough space for metadata (500kb is enough). |
Constructor | Description |
---|---|
GridFS(DB db) |
Creates a GridFS instance for the default bucket "fs" in the given database.
|
GridFS(DB db,
String bucket) |
Creates a GridFS instance for the specified bucket in the given database.
|
Modifier and Type | Method | Description |
---|---|---|
GridFSInputFile |
createFile() |
This method creates an empty
GridFSInputFile instance. |
GridFSInputFile |
createFile(byte[] data) |
Creates a file entry.
|
GridFSInputFile |
createFile(File file) |
Creates a file entry.
|
GridFSInputFile |
createFile(InputStream in) |
Creates a file entry.
|
GridFSInputFile |
createFile(InputStream in,
boolean closeStreamOnPersist) |
Creates a file entry.
|
GridFSInputFile |
createFile(InputStream in,
String filename) |
Creates a file entry.
|
GridFSInputFile |
createFile(InputStream in,
String filename,
boolean closeStreamOnPersist) |
Creates a file entry.
|
GridFSInputFile |
createFile(String filename) |
Creates a file entry.
|
List<GridFSDBFile> |
find(DBObject query) |
Finds a list of files matching the given query.
|
List<GridFSDBFile> |
find(DBObject query,
DBObject sort) |
Finds a list of files matching the given query.
|
List<GridFSDBFile> |
find(String filename) |
Finds a list of files matching the given filename.
|
List<GridFSDBFile> |
find(String filename,
DBObject sort) |
Finds a list of files matching the given filename.
|
GridFSDBFile |
find(ObjectId objectId) |
Finds one file matching the given objectId.
|
GridFSDBFile |
findOne(DBObject query) |
Finds one file matching the given query.
|
GridFSDBFile |
findOne(String filename) |
Finds one file matching the given filename.
|
GridFSDBFile |
findOne(ObjectId objectId) |
Finds one file matching the given objectId.
|
String |
getBucketName() |
Gets the bucket name used in the collection's namespace.
|
protected DBCollection |
getChunksCollection() |
Gets the
DBCollection in which the binary chunks are stored. |
DB |
getDB() |
Gets the database used.
|
DBCursor |
getFileList() |
Gets the list of files stored in this gridfs, sorted by filename.
|
DBCursor |
getFileList(DBObject query) |
Gets a filtered list of files stored in this gridfs, sorted by filename.
|
DBCursor |
getFileList(DBObject query,
DBObject sort) |
Gets a sorted, filtered list of files stored in this gridfs.
|
protected DBCollection |
getFilesCollection() |
Gets the
DBCollection in which the file's metadata is stored. |
void |
remove(DBObject query) |
Removes all files matching the given query.
|
void |
remove(String filename) |
Removes all files matching the given filename.
|
void |
remove(ObjectId id) |
Removes the file matching the given id.
|
public static final int DEFAULT_CHUNKSIZE
@Deprecated public static final long MAX_CHUNKSIZE
Mongo.getMaxBsonObjectSize()
- 500*1000.
Please ensure that you left enough space for metadata (500kb is enough).public static final String DEFAULT_BUCKET
public GridFS(DB db)
db
- database to work withMongoException
- if there's a failureWriteConcern
public GridFS(DB db, String bucket)
db
- database to work withbucket
- bucket to use in the given databaseMongoException
- if there's a failureWriteConcern
public DBCursor getFileList()
public DBCursor getFileList(DBObject query)
query
- filter to applypublic DBCursor getFileList(DBObject query, DBObject sort)
query
- filter to applysort
- sorting to applypublic GridFSDBFile find(ObjectId objectId)
objectId
- the objectId of the file stored on a serverMongoException
- if the operation failspublic GridFSDBFile findOne(ObjectId objectId)
objectId
- the objectId of the file stored on a serverMongoException
- if the operation failspublic GridFSDBFile findOne(String filename)
filename
- the name of the file stored on a serverMongoException
- if the operation failspublic GridFSDBFile findOne(DBObject query)
query
- filter to applyMongoException
- if the operation failspublic List<GridFSDBFile> find(String filename)
filename
- the filename to look forMongoException
- if the operation failspublic List<GridFSDBFile> find(String filename, DBObject sort)
filename
- the filename to look forsort
- the fields to sort withMongoException
- if the operation failspublic List<GridFSDBFile> find(DBObject query)
query
- the filter to applyMongoException
- if the operation failspublic List<GridFSDBFile> find(DBObject query, DBObject sort)
query
- the filter to applysort
- the fields to sort withMongoException
- if the operation failspublic void remove(ObjectId id)
id
- the id of the file to be removedMongoException
- if the operation failspublic void remove(String filename)
filename
- the name of the file to be removedMongoException
- if the operation failspublic void remove(DBObject query)
query
- filter to applyMongoException
- if the operation failspublic GridFSInputFile createFile(byte[] data)
GridFSInputFile.save()
.data
- the file's datapublic GridFSInputFile createFile(File file) throws IOException
GridFSInputFile.save()
.file
- the file objectIOException
- if there are problems reading file
public GridFSInputFile createFile(InputStream in)
GridFSInputFile.save()
.in
- an inputstream containing the file's datapublic GridFSInputFile createFile(InputStream in, boolean closeStreamOnPersist)
GridFSInputFile.save()
.in
- an inputstream containing the file's datacloseStreamOnPersist
- indicate the passed in input stream should be closed once the data chunk persistedpublic GridFSInputFile createFile(InputStream in, String filename)
GridFSInputFile.save()
.in
- an inputstream containing the file's datafilename
- the file name as stored in the dbpublic GridFSInputFile createFile(InputStream in, String filename, boolean closeStreamOnPersist)
GridFSInputFile.save()
.in
- an inputstream containing the file's datafilename
- the file name as stored in the dbcloseStreamOnPersist
- indicate the passed in input stream should be closed once the data chunk persistedpublic GridFSInputFile createFile(String filename)
filename
- the file name as stored in the dbcreateFile()
public GridFSInputFile createFile()
GridFSInputFile
instance. On this instance an OutputStream
can be obtained using
the GridFSInputFile.getOutputStream()
method. You can still call GridFSInputFile.setContentType(String)
and GridFSInputFile.setFilename(String)
. The file will be completely written and closed after calling the OutputStream.close()
method on the output stream.public String getBucketName()
public DB getDB()
protected DBCollection getFilesCollection()
DBCollection
in which the file's metadata is stored.protected DBCollection getChunksCollection()
DBCollection
in which the binary chunks are stored.