The
maximum document size in mongoDB is 16MB. To store documents larger than the
maximum size (16 MB), MongoDB provides the GridFS API.
How GridFS handles
data more than 16MB
Instead
of storing a file in a single document, GridFS divides a file into parts,
called chunks. Each chunk stored as a single document.
GridFS
uses two collections to store files. One to store meta data about chunks, and
other to store chunks. When you query a GridFS store for a file, the driver or
client will reassemble the chunks as needed.
import java.io.File; import com.mongodb.DB; import com.mongodb.MongoClient; import com.mongodb.gridfs.GridFS; import com.mongodb.gridfs.GridFSDBFile; import com.mongodb.gridfs.GridFSInputFile; public class GRIDFSSample { /* Step 1 : get mongoCLient */ public static MongoClient getMongoClient() { MongoClient mongoClient = null; try { mongoClient = new MongoClient("localhost", 27017); } catch (Exception e) { e.printStackTrace(); } return mongoClient; } public static void saveFIle(DB db, File file)throws Exception{ GridFS gridfs = new GridFS(db, "videos"); GridFSInputFile gfsFile = gridfs.createFile(file); gfsFile.setFilename("videos1.1"); gfsFile.save(); } public static void getFile(DB db){ String newFileName = "videos1.1"; GridFS gfsPhoto = new GridFS(db, "videos"); GridFSDBFile imageForOutput = gfsPhoto.findOne(newFileName); System.out.println(imageForOutput); } public static void main(String[] args) throws Exception { MongoClient mongoClient = getMongoClient(); DB db = mongoClient.getDB("test"); File file = new File("E:\\movies\\English\\Sherlock.Holmes.mp4"); saveFIle(db, file); getFile(db); System.out.println("done"); } }
Output
{ "filename" : "videos1.1" , "aliases" : null , "chunkSize" : 261120 , "uploadDate" : { "$date" : "2015-01-24T08:45:25.365Z"} , "length" : 915607173 , "_id" : { "$oid" : "54c35ba5df161e5e1b7a6491"} , "contentType" : null , "md5" : "8ce772b47ddbb007a089b103579140dc"} done
After
running above java program, it creates two collections, one for to store chunks
and other to store metadata.
> show collections authors books company employee marks_sheet person photo.chunks photo.files student system.indexes videos videos.chunks videos.files
No comments:
Post a Comment