MongoDB-GridFS

GridFS이미지, 오디오 파일, 비디오 파일 등과 같은 대용량 파일을 저장하고 검색하기위한 MongoDB 사양입니다. 파일을 저장하는 일종의 파일 시스템이지만 해당 데이터는 MongoDB 컬렉션 내에 저장됩니다. GridFS는 문서 크기 제한 인 16MB보다 더 큰 파일을 저장할 수 있습니다.

GridFS는 파일을 청크로 분할하고 각 데이터 청크를 각각 최대 크기가 255k 인 별도의 문서에 저장합니다.

GridFS는 기본적으로 두 개의 컬렉션을 사용합니다. fs.filesfs.chunks파일의 메타 데이터와 청크를 저장합니다. 각 청크는 고유 한 _id ObjectId 필드로 식별됩니다. fs. 파일은 상위 문서 역할을합니다. 그만큼files_id fs.chunks 문서의 필드는 청크를 부모에 연결합니다.

다음은 fs.files 컬렉션의 샘플 문서입니다-

{
   "filename": "test.txt",
   "chunkSize": NumberInt(261120),
   "uploadDate": ISODate("2014-04-13T11:32:33.557Z"),
   "md5": "7b762939321e146569b07f72c62cca4f",
   "length": NumberInt(646)
}

문서는 파일 이름, 청크 크기, 업로드 날짜 및 길이를 지정합니다.

다음은 fs.chunks 문서의 샘플 문서입니다.

{
   "files_id": ObjectId("534a75d19f54bfec8a2fe44b"),
   "n": NumberInt(0),
   "data": "Mongo Binary Data"
}

GridFS에 파일 추가

이제 GridFS를 사용하여 mp3 파일을 저장합니다. put명령. 이를 위해 우리는mongofiles.exe MongoDB 설치 폴더의 bin 폴더에있는 유틸리티.

명령 프롬프트를 열고 MongoDB 설치 폴더의 bin 폴더에있는 mongofiles.exe로 이동하여 다음 코드를 입력하십시오.

>mongofiles.exe -d gridfs put song.mp3

여기, gridfs파일이 저장 될 데이터베이스의 이름입니다. 데이터베이스가 없으면 MongoDB는 즉시 새 문서를 자동으로 생성합니다. Song.mp3는 업로드 된 파일의 이름입니다. 데이터베이스에서 파일의 문서를 보려면 쿼리 찾기를 사용할 수 있습니다.

>db.fs.files.find()

위의 명령은 다음 문서를 반환했습니다.

{
   _id: ObjectId('534a811bf8b4aa4d33fdf94d'), 
   filename: "song.mp3", 
   chunkSize: 261120, 
   uploadDate: new Date(1397391643474), md5: "e4f53379c909f7bed2e9d631e15c1c41",
   length: 10401959 
}

또한 이전 쿼리에서 반환 된 문서 ID를 사용하여 다음 코드로 저장된 파일과 관련된 fs.chunks 컬렉션에있는 모든 청크를 볼 수 있습니다.

>db.fs.chunks.find({files_id:ObjectId('534a811bf8b4aa4d33fdf94d')})

필자의 경우 쿼리는 전체 mp3 문서가 40 개의 데이터 청크로 분할되었음을 의미하는 40 개의 문서를 반환했습니다.