몽고DB 그리드FS
GridFS는 16M(BSON 파일 제한)을 초과하는 파일(예: 사진, 오디오, 비디오 등)을 저장하고 복원하는 데 사용됩니다.
GridFS도 파일 저장 방식이지만 MonoDB 컬렉션에 저장됩니다.
GridFS는 16M보다 큰 파일을 더 잘 저장할 수 있습니다.
GridFS는 큰 파일 객체를 여러 개의 작은 청크(파일 조각)로 나눕니다. 일반적으로 각 청크는 MongoDB의 문서로 청크 컬렉션에 저장됩니다.
GridFS는 파일을 저장하기 위해 fs.files와 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의 put 명령을 사용하여 mp3 파일을 저장합니다. MongoDB 설치 디렉터리의 bin에서 mongofiles.exe 도구를 호출합니다.
명령 프롬프트를 열고 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 }
fs의 모든 청크를 볼 수 있습니다. 청크 컬렉션 아래에서 파일을 얻습니다. _id 값을 사용하면 이 _id를 기반으로 청크 데이터를 얻을 수 있습니다.
>db.fs.chunks.find({files_id:ObjectId('534a811bf8b4aa4d33fdf94d')})
위 예에서 쿼리는 40개 문서의 데이터를 반환했습니다. 이는 mp3 파일이 40개 문서에 저장되어 있음을 의미합니다. 덩어리.