GridFS.
μ΄ νμ΄μ§μ λ΄μ©
- κ°μ
- GridFS μλ λ°©μ
- GridFS λ²ν· λ§λ€κΈ°
- νμΌ μ μ₯
- μ λ ₯ μ€νΈλ¦Όμ μ¬μ©νμ¬ νμΌ μ λ‘λ
- μΆλ ₯ μ€νΈλ¦Όμ μ¬μ©νμ¬ νμΌ μ λ‘λ
- νμΌ μ 보 κ²μ
- νμΌ λ€μ΄λ‘λ
- νμΌ μμ λ³Έ
- μΆλ ₯ μ€νΈλ¦Όμ νμΌ λ€μ΄λ‘λ
- μ λ ₯ μ€νΈλ¦Όμ νμΌ λ€μ΄λ‘λ
- νμΌ μ΄λ¦ λ°κΎΈκΈ°
- νμΌ μμ
- GridFS λ²ν· μμ
- μΆκ° 리μμ€
κ°μ
μ΄ κ°μ΄λμμλ GridFSλ₯Ό μ¬μ©νμ¬ MongoDBμμ λμ©λ νμΌμ μ μ₯νκ³ μ‘°ννλ λ°©λ²μ λν΄ μ€λͺ ν©λλ€. GridFSλ νμΌμ μ μ₯ν λ μ²ν¬λ‘ λΆν νκ³ κ²μν λ λ€μ 쑰립νλ λ°©λ²μ μ€λͺ νλ λλΌμ΄λ²μ μν΄ κ΅¬νλ μ¬μμ λλ€. GridFSμ λλΌμ΄λ² ꡬνμ νμΌ μ€ν 리μ§μ μ΄μκ³Ό ꡬμ±μ κ΄λ¦¬νλ μΆμνμ λλ€.
νμΌ ν¬κΈ°κ° BSON λ¬Έμ ν¬κΈ° μ νμΈ 16MBλ₯Ό μ΄κ³Όνλ κ²½μ° GridFSλ₯Ό μ¬μ©ν΄μΌ ν©λλ€. GridFSκ° μ¬μ© μ¬λ‘μ μ ν©νμ§ μ¬λΆμ λν μμΈν λ΄μ©μ GridFS μλ² λ§€λ΄μΌ νμ΄μ§λ₯Ό μ°Έμ‘°νμΈμ.
GridFS μμ κ³Ό μ΄λ₯Ό μννλ λ°©λ²μ μ€λͺ νλ λ€μ μΉμ μ μ°Έμ‘°νμΈμ.
GridFS μλ λ°©μ
GridFSλ νμΌ μ²ν¬μ νμΌμ μ€λͺ νλ μ λ³΄κ° λ€μ΄ μλ MongoDB 컬λ μ κ·Έλ£ΉμΈ λ²ν·μ νμΌμ ꡬμ±ν©λλ€. λ²ν·μλ GridFS μ¬μμ μ μλ κ·μΉμ μ¬μ©νμ¬ λͺ λͺ λ λ€μ 컬λ μ μ΄ ν¬ν¨λμ΄ μμ΅λλ€.
chunks
컬λ μ μ λ°μ΄λ리 νμΌ μ²ν¬λ₯Ό μ μ₯ν©λλ€.files
0} 컬λ μ μ νμΌ λ©νλ°μ΄ν°κ° μ μ₯λ©λλ€.
μ GridFS λ²ν·μ μμ±νλ©΄ λλΌμ΄λ²λ λ€λ₯Έ μ΄λ¦μ μ§μ νμ§ μλ ν κΈ°λ³Έ λ²ν· μ΄λ¦ fs
μ λμ¬ μμ μμ 컬λ μ
μ μμ±ν©λλ€. λν λλΌμ΄λ²λ νμΌ λ° κ΄λ ¨ λ©νλ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ κ²μν μ μλλ‘ κ° μ»¬λ μ
μ μΈλ±μ€λ₯Ό μμ±ν©λλ€. λλΌμ΄λ²λ GridFS λ²ν·μ΄ μμ§ μ‘΄μ¬νμ§ μλ κ²½μ° μ²« λ²μ§Έ μ°κΈ° μμ
μμλ§ GridFS λ²ν·μ μμ±ν©λλ€. λλΌμ΄λ²λ μΈλ±μ€κ° μ‘΄μ¬νμ§ μκ±°λ λ²ν·μ΄ λΉμ΄ μλ κ²½μ°μλ§ μΈλ±μ€λ₯Ό μμ±ν©λλ€. GridFS μΈλ±μ€μ λν μμΈν λ΄μ©μ GridFS μΈλ±μ€μ λν μλ² λ§€λ΄μΌ νμ΄μ§λ₯Ό μ°Έμ‘° νμΈμ.
GridFSλ‘ νμΌμ μ μ₯ν λ λλΌμ΄λ²λ νμΌμ μμ μ²ν¬λ‘ λΆν νλ©°, κ°κ°μ μ²ν¬λ chunks
컬λ μ
μμ λ³λμ λ¬Έμλ‘ νμλ©λλ€. λν files
컬λ μ
μ νμΌ ID, νμΌ μ΄λ¦ λ° κΈ°ν νμΌ λ©νλ°μ΄ν°κ° ν¬ν¨λ λ¬Έμλ₯Ό λ§λλλ€. λ©λͺ¨λ¦¬ λλ μ€νΈλ¦Όμμ νμΌμ μ
λ‘λν μ μμ΅λλ€. λ²ν·μ μ
λ‘λν λ GridFSκ° νμΌμ λΆν νλ λ°©λ²μ λ³΄λ €λ©΄ λ€μ λ€μ΄μ΄κ·Έλ¨μ μ°Έμ‘°νμΈμ.
νμΌμ κ²μν λ GridFSλ μ§μ λ λ²ν·μ files
컬λ μ
μμ λ©νλ°μ΄ν°λ₯Ό κ°μ Έμμ μ΄ μ 보λ₯Ό μ¬μ©νμ¬ chunks
컬λ μ
μ λ¬Έμμμ νμΌμ μ¬κ΅¬μ±ν©λλ€. νμΌμ λ©λͺ¨λ¦¬λ‘ μ½κ±°λ μ€νΈλ¦ΌμΌλ‘ μΆλ ₯ν μ μμ΅λλ€.
GridFS λ²ν· λ§λ€κΈ°
GridFSμμ νμΌμ μ‘°ννκ±°λ μ μ₯νλ €λ©΄ λ²ν·μ λ§λ€κ±°λ MongoDB λ°μ΄ν°λ² μ΄μ€μμ κΈ°μ‘΄ λ²ν·μ λν μ°Έμ‘°λ₯Ό κ°μ Έμ€λ©΄ λ©λλ€. MongoDatabase
μΈμ€ν΄μ€λ₯Ό λ§€κ° λ³μλ‘ μ¬μ©νμ¬ GridFSBuckets.create()
ν¬νΌ λ©μλλ₯Ό νΈμΆνμ¬ GridFSBucket
μ μΈμ€ν΄μ€νν©λλ€. GridFSBucket
μΈμ€ν΄μ€λ₯Ό μ¬μ©νμ¬ λ²ν·μ νμΌμμ μ½κΈ° λ° μ°κΈ° μμ
μ νΈμΆν μ μμ΅λλ€.
MongoDatabase database = mongoClient.getDatabase("mydb"); GridFSBucket gridFSBucket = GridFSBuckets.create(database);
κΈ°λ³Έ μ΄λ¦μΈ fs
μ΄μΈμ μ¬μ©μ μ§μ μ΄λ¦μΌλ‘ λ²ν·μ λ§λ€κ±°λ μ°Έμ‘°νλ €λ©΄ μλμ κ°μ΄ λ²ν· μ΄λ¦μ λ λ²μ§Έ λ§€κ° λ³μλ‘ create()
λ©μλμ μ λ¬ν©λλ€.
GridFSBucket gridFSBucket = GridFSBuckets.create(database, "myCustomBucket");
μ°Έκ³
create()
λ₯Ό νΈμΆν λ λ²ν·μ΄ μ‘΄μ¬νμ§ μμΌλ©΄ MongoDBκ° λ²ν·μ λ§λ€μ§ μμ΅λλ€. λμ , 첫 λ²μ§Έ νμΌμ μ
λ‘λν λμ κ°μ΄ νμμ λ°λΌ λ²ν·μ μμ±ν©λλ€.
μ΄ μΉμ μ μΈκΈλ ν΄λμ€ λ° λ©μλμ λν μμΈν λ΄μ©μ λ€μ API μ€λͺ μλ₯Ό μ°Έμ‘°νμΈμ.
νμΌ μ μ₯
GridFS λ²ν·μ νμΌμ μ μ₯νλ €λ©΄ InputStream
μΈμ€ν΄μ€μμ νμΌμ μ
λ‘λνκ±°λ ν΄λΉ λ°μ΄ν°λ₯Ό GridFSUploadStream
μ κΈ°λ‘νλ©΄ λ©λλ€.
λ μ€ μ΄λ€ μ
λ‘λ νλ‘μΈμ€μμλ , λ©νλ°μ΄ν°λ‘ μ μ₯ν νμΌ μ²ν¬ ν¬κΈ° λ° κΈ°ν νλ/κ° μκ³Ό κ°μ κ΅¬μ± μ 보λ₯Ό μ§μ ν μ μμ΅λλ€. λ€μ μ½λ μ€λν«μ νμλ λλ‘ GridFSUploadOptions
μΈμ€ν΄μ€μμ μ΄ μ 보λ₯Ό μ€μ ν©λλ€.
GridFSUploadOptions options = new GridFSUploadOptions() .chunkSizeBytes(1048576) // 1MB chunk size .metadata(new Document("myField", "myValue"));
μμΈν λ΄μ©μ GridFSUploadOptions API μ€λͺ μλ₯Ό μ°Έμ‘°νμΈμ.
μ€μ
MAJORITY μ°κΈ° κ³ λ € μ¬μ©
GridFS λ²ν·μ νμΌμ μ μ₯ν λλ WriteConcern.MAJORITY
μ°κΈ° κ³ λ €λ₯Ό μ¬μ©ν΄μΌ ν©λλ€. λ€λ₯Έ μ°κΈ° κ³ λ €λ₯Ό μ§μ νλ©΄ GridFS νμΌ μ
λ‘λ μ€μ λ°μνλ 볡μ λ³Έ μΈνΈ ν¬νλ‘ μΈν΄ μ
λ‘λ νλ‘μΈμ€κ° μ€λ¨λμ΄ μΌλΆ νμΌ μ²ν¬κ° μμ€λ μ μμ΅λλ€.
μ°κΈ° κ³ λ €μ λν μμΈν λ΄μ©μ MongoDB Server 맀λ΄μΌμ μ°κΈ° κ³ λ € νμ΄μ§λ₯Ό μ°Έμ‘°νμΈμ.
μ λ ₯ μ€νΈλ¦Όμ μ¬μ©νμ¬ νμΌ μ λ‘λ
μ΄ μΉμ
μμλ μ
λ ₯ μ€νΈλ¦Όμ μ¬μ©νμ¬ GridFS λ²ν·μ νμΌμ μ
λ‘λνλ λ°©λ²μ 보μ¬μ€λλ€. λ€μ μ½λ μμμμλ FileInputStream
μ μ¬μ©νμ¬ νμΌ μμ€ν
μ νμΌμμ λ°μ΄ν°λ₯Ό μ½κ³ λ€μ μμ
μ μννμ¬ GridFSμ μ
λ‘λνλ λ°©λ²μ λ³΄μ¬ μ€λλ€.
FileInputStream
μ μ¬μ©νμ¬ νμΌ μμ€ν μμ μ½κΈ°.GridFSUploadOptions
λ₯Ό μ¬μ©νμ¬ μ²ν¬ ν¬κΈ° μ€μ .type
μ΄λΌλ μ¬μ©μ μ§μ λ©νλ°μ΄ν° νλλ₯Ό 'zip archive' κ°μΌλ‘ μ€μ .GridFS νμΌ μ΄λ¦μ 'myProject.zip'μΌλ‘ μ§μ νμ¬
project.zip
μ΄λΌλ νμΌ μ λ‘λ.
String filePath = "/path/to/project.zip"; try (InputStream streamToUploadFrom = new FileInputStream(filePath) ) { // Defines options that specify configuration information for files uploaded to the bucket GridFSUploadOptions options = new GridFSUploadOptions() .chunkSizeBytes(1048576) .metadata(new Document("type", "zip archive")); // Uploads a file from an input stream to the GridFS bucket ObjectId fileId = gridFSBucket.uploadFromStream("myProject.zip", streamToUploadFrom, options); // Prints the "_id" value of the uploaded file System.out.println("The file id of the uploaded file is: " + fileId.toHexString()); }
μ΄ μ½λ μμμμλ μ λ‘λλ νμΌμ΄ GridFSμ μ±κ³΅μ μΌλ‘ μ μ₯λλ©΄ ν΄λΉ νμΌμ νμΌ IDλ₯Ό μΆλ ₯ν©λλ€.
μμΈν λ΄μ©μ uploadFromStream()μ λν API μ€λͺ μλ₯Ό μ°Έμ‘°νμΈμ.
μΆλ ₯ μ€νΈλ¦Όμ μ¬μ©νμ¬ νμΌ μ λ‘λ
μ΄ μΉμ
μμλ μΆλ ₯ μ€νΈλ¦Όμ κΈ°λ‘νμ¬ GridFS λ²ν·μ νμΌμ μ
λ‘λνλ λ°©λ²μ 보μ¬μ€λλ€. λ€μ μ½λ μμμμλ μλ μμ
μ μνν΄μ GridFSUploadStream
μ κΈ°λ‘νμ¬ GridFSμ λ°μ΄ν°λ₯Ό 보λ΄λ λ°©λ²μ 보μ¬μ€λλ€.
'project.zip'μ΄λΌλ νμΌμ νμΌ μμ€ν μμ λ°μ΄νΈ λ°°μ΄λ‘ μ½μ΅λλ€.
GridFSUploadOptions
λ₯Ό μ¬μ©νμ¬ μ²ν¬ ν¬κΈ° μ€μ .type
μ΄λΌλ μ¬μ©μ μ§μ λ©νλ°μ΄ν° νλλ₯Ό 'zip archive' κ°μΌλ‘ μ€μ .λ°μ΄νΈλ₯Ό
GridFSUploadStream
μ κΈ°λ‘νκ³ νμΌ μ΄λ¦ 'myProject.zip'μΌλ‘ μ§μ ν©λλ€. μ€νΈλ¦ΌμchunkSize
μ€μ μ μ§μ λ νλμ λλ¬ν λκΉμ§ λ°μ΄ν°λ₯Ό λ²νΌμ μ λ ₯νκ³chunks
컬λ μ μ μ μ²ν¬λ‘ μ½μ ν©λλ€.
Path filePath = Paths.get("/path/to/project.zip"); byte[] data = Files.readAllBytes(filePath); // Defines options that specify configuration information for files uploaded to the bucket GridFSUploadOptions options = new GridFSUploadOptions() .chunkSizeBytes(1048576) .metadata(new Document("type", "zip archive")); try (GridFSUploadStream uploadStream = gridFSBucket.openUploadStream("myProject.zip", options)) { // Writes file data to the GridFS upload stream uploadStream.write(data); uploadStream.flush(); // Prints the "_id" value of the uploaded file System.out.println("The file id of the uploaded file is: " + uploadStream.getObjectId().toHexString()); // Prints a message if any exceptions occur during the upload process } catch (Exception e) { System.err.println("The file upload failed: " + e); }
μ΄ μ½λ μμμμλ μ λ‘λλ νμΌμ΄ GridFSμ μ±κ³΅μ μΌλ‘ μ μ₯λλ©΄ ν΄λΉ νμΌμ νμΌ IDλ₯Ό μΆλ ₯ν©λλ€.
μ°Έκ³
νμΌ μ
λ‘λμ μ±κ³΅νμ§ λͺ»νλ©΄ μμ
μμ μμΈκ° λ°μνκ³ μ
λ‘λλ μ²ν¬λ λΆλ¦¬λ μ²ν¬κ° λ©λλ€. λΆλ¦¬λ μ²ν¬λ GridFS chunks
컬λ μ
μ μλ λ¬Έμ μ€ GridFS files
컬λ μ
μ νμΌ IDλ₯Ό μ°Έμ‘°νμ§ μλ λ¬Έμμ
λλ€. μ
λ‘λ λλ μμ μμ
μ΄ μ€λ¨λλ©΄ νμΌ μ²ν¬κ° λΆλ¦¬λ μ²ν¬κ° λ μ μμ΅λλ€. λΆλ¦¬λ μ²ν¬λ₯Ό μ κ±°νλ €λ©΄ μ½κΈ° μμ
μ μ¬μ©νμ¬ λΆλ¦¬λ μ²ν¬λ₯Ό μλ³νκ³ μ°κΈ° μμ
μ μ¬μ©νμ¬ μ κ±°ν΄μΌ ν©λλ€.
μμΈν λ΄μ©μ GridFSUploadStreamμ λν API μ€λͺ μλ₯Ό μ°Έμ‘°νμΈμ.
νμΌ μ 보 κ²μ
μ΄ μΉμ
μμλ GridFS λ²ν·μ files
컬λ μ
μ μ μ₯λ νμΌ λ©νλ°μ΄ν°λ₯Ό κ²μνλ λ°©λ²μ μμλ³Ό μ μμ΅λλ€. λ©νλ°μ΄ν°μλ λ€μμ ν¬ν¨νμ¬ μ°Έμ‘°νλ νμΌμ λν μ λ³΄κ° ν¬ν¨λ©λλ€.
νμΌμ ID
νμΌ μ΄λ¦
νμΌμ κΈΈμ΄/ν¬κΈ°
μ λ‘λ λ μ§ λ° μκ°
λ€λ₯Έ μ 보λ₯Ό μ μ₯ν μ μλ
metadata
λ¬Έμμ λλ€.
GridFS λ²ν·μμ νμΌμ μ‘°ννλ €λ©΄ GridFSBucket
μΈμ€ν΄μ€μμ find()
λ©μλλ₯Ό νΈμΆν©λλ€. μ΄ λ©μλλ GridFSFindIterable
μ λ°ννλ©°, μ΄λ₯Ό ν΅ν΄ κ²°κ³Όμ μ‘μΈμ€ν μ μμ΅λλ€.
λ€μ μ½λ μμλ GridFS λ²ν·μ λͺ¨λ νμΌμμ νμΌ λ©νλ°μ΄ν°λ₯Ό μ‘°ννκ³ μΆλ ₯νλ λ°©λ²μ 보μ¬μ€λλ€. μ΄ μμμλ GridFSFindIterable
μμ μ‘°νλ κ²°κ³Όλ₯Ό μνν μ μλ μ¬λ¬ κ°μ§ λ°©λ² μ€ Consumer
ν¨μν μΈν°νμ΄μ€λ₯Ό μ¬μ©νμ¬ λ€μ κ²°κ³Όλ₯Ό μΆλ ₯ν©λλ€.
gridFSBucket.find().forEach(new Consumer<GridFSFile>() { public void accept(final GridFSFile gridFSFile) { System.out.println(gridFSFile); } });
λ€μ μ½λ μμμμλ 쿼리 νν°μ μ§μ λ νλμ μΌμΉνλ λͺ¨λ νμΌμ νμΌ μ΄λ¦μ μ‘°ννκ³ μΆλ ₯νλ λ°©λ²μ 보μ¬μ€λλ€. λν λ°νλ GridFSFindIterable
μμ sort()
λ° limit()
λ₯Ό νΈμΆνμ¬ κ²°κ³Όμ μμμ μ΅λ κ°μλ₯Ό μ§μ ν©λλ€.
Bson query = Filters.eq("metadata.type", "zip archive"); Bson sort = Sorts.ascending("filename"); // Retrieves 5 documents in the bucket that match the filter and prints metadata gridFSBucket.find(query) .sort(sort) .limit(5) .forEach(new Consumer<GridFSFile>() { public void accept(final GridFSFile gridFSFile) { System.out.println(gridFSFile); } });
metadata
μ λ΄μ₯λ λ¬Έμ μ΄λ―λ‘ μΏΌλ¦¬ νν°νλ€ λ μ νκΈ°λ² μ μ¬μ©νμ¬ λ¬Έμ λ΄μμ type
νλ λ₯Ό μ§μ ν©λλ€. μμΈν λ΄μ©μ μλ² λλ/μ€μ²© λ¬Έμ 쿼리 λ°©λ²μ λν μλ² λ§€λ΄μΌ κ°μ΄λ λ₯Ό μ°Έμ‘°νμΈμ.
μ΄ μΉμ μ μΈκΈλ ν΄λμ€ λ° λ©μλμ λν μμΈν λ΄μ©μ λ€μ 리μμ€λ₯Ό μ°Έμ‘°νμΈμ.
GridFSFindIterable API μ€λͺ μ
GridFSBucket.find() API μ€λͺ μ
νμΌ λ€μ΄λ‘λ
νμΌμ GridFSμμ μ€νΈλ¦ΌμΌλ‘ μ§μ λ€μ΄λ‘λνκ±°λ μ€νΈλ¦Όμμ λ©λͺ¨λ¦¬μ μ μ₯ν μ μμ΅λλ€. νμΌ ID λλ νμΌ μ΄λ¦μ μ¬μ©νμ¬ μ‘°νν νμΌμ μ§μ ν μ μμ΅λλ€.
νμΌ μμ λ³Έ
λ²ν·μ λμΌν νμΌ μ΄λ¦μ 곡μ νλ νμΌμ΄ μ¬λ¬ κ° μλ κ²½μ°, GridFSλ κΈ°λ³Έμ μΌλ‘ κ°μ₯ μ΅κ·Όμ μ λ‘λλ νμΌ μμ λ³Έμ μ νν©λλ€. κ°μ μ΄λ¦μ 곡μ νλ κ° νμΌμ ꡬλΆνκΈ° μν΄ GridFSλ λμΌν μ΄λ¦μ νμΌμ μ λ‘λ μκ° μμΌλ‘ μμ λ³Έ λ²νΈλ₯Ό ν λΉν©λλ€.
μλμ νμΌ μμ λ³Έ λ²νΈλ '0'μ΄κ³ κ·Έ λ€μμΌλ‘ κ°μ₯ μ΅κ·Όμ νμΌ μμ λ³Έ λ²νΈλ '1'μ λλ€. μμ λ³Έμ μ΅μ μ±μ ν΄λΉνλ μμ κ°μ μ§μ ν μλ μμ΅λλ€. μμ λ³Έ κ°μ΄ '-1'μ΄λ©΄ κ°μ₯ μ΅κ·Όμ μμ λ³Έμ΄κ³ '-2'λ κ·Έ λ€μμ μ΅κ·Ό μμ λ³Έμ μλ―Έν©λλ€.
λ€μ μ½λ μ€λν«μ GridFSDownloadOptions
μΈμ€ν΄μ€μμ νμΌμ λ λ²μ§Έ μμ λ³Έμ μ§μ νλ λ°©λ²μ 보μ¬μ€λλ€.
GridFSDownloadOptions downloadOptions = new GridFSDownloadOptions().revision(1);
μμ λ³Έ μ΄κ±°μ λν μμΈν λ΄μ©μ GridFSDownloadOptionsμ λν API μ€λͺ μλ₯Ό μ°Έμ‘°νμΈμ.
μΆλ ₯ μ€νΈλ¦Όμ νμΌ λ€μ΄λ‘λ
GridFS λ²ν·μ μλ νμΌμ μΆλ ₯ μ€νΈλ¦Όμ λ€μ΄λ‘λν μ μμ΅λλ€. λ€μ μ½λ μμμμλ downloadToStream()
λ©μλλ₯Ό νΈμΆνμ¬ 'myProject.zip' νμΌμ 첫 λ²μ§Έ μμ λ³Έμ OutputStream
μ λ€μ΄λ‘λνλ λ°©λ²μ 보μ¬μ€λλ€.
GridFSDownloadOptions downloadOptions = new GridFSDownloadOptions().revision(0); // Downloads a file to an output stream try (FileOutputStream streamToDownloadTo = new FileOutputStream("/tmp/myProject.zip")) { gridFSBucket.downloadToStream("myProject.zip", streamToDownloadTo, downloadOptions); streamToDownloadTo.flush(); }
μ΄ λ©μλμ λν μμΈν λ΄μ©μ downloadToStream() API μ€λͺ μλ₯Ό μ°Έμ‘°νμΈμ.
μ λ ₯ μ€νΈλ¦Όμ νμΌ λ€μ΄λ‘λ
μ
λ ₯ μ€νΈλ¦Όμ μ¬μ©νμ¬ GridFS λ²ν·μ μλ νμΌμ λ©λͺ¨λ¦¬μ λ€μ΄λ‘λν μ μμ΅λλ€. GridFS λ²ν·μμ openDownloadStream()
λ©μλλ₯Ό νΈμΆνμ¬ νμΌμ μ½μ μ μλ μ
λ ₯ μ€νΈλ¦ΌμΈ GridFSDownloadStream
μ μ΄ μ μμ΅λλ€.
λ€μ μ½λ μμμμλ fileId
λ³μκ° μ°Έμ‘°νλ νμΌμ λ©λͺ¨λ¦¬μ λ€μ΄λ‘λνκ³ ν΄λΉ μ½ν
μΈ λ₯Ό λ¬Έμμ΄λ‘ μΆλ ₯νλ λ°©λ²μ 보μ¬μ€λλ€.
ObjectId fileId = new ObjectId("60345d38ebfcf47030e81cc9"); // Opens an input stream to read a file containing a specified "_id" value and downloads the file try (GridFSDownloadStream downloadStream = gridFSBucket.openDownloadStream(fileId)) { int fileLength = (int) downloadStream.getGridFSFile().getLength(); byte[] bytesToWriteTo = new byte[fileLength]; downloadStream.read(bytesToWriteTo); // Prints the downloaded file's contents as a string System.out.println(new String(bytesToWriteTo, StandardCharsets.UTF_8)); }
μ΄ λ©μλμ λν μμΈν λ΄μ©μ openDownloadStream() API μ€λͺ μλ₯Ό μ°Έμ‘°νμΈμ.
νμΌ μ΄λ¦ λ°κΎΈκΈ°
rename()
λ©μλλ₯Ό νΈμΆνμ¬ λ²ν·μ μλ GridFS νμΌμ μ΄λ¦μ μ
λ°μ΄νΈν μ μμ΅λλ€. νμΌ μ΄λ¦μ΄ μλ νμΌ IDλ‘ μ΄λ¦μ λ°κΎΈλλ‘ νμΌμ μ§μ ν΄μΌ ν©λλ€.
μ°Έκ³
rename()
λ©μλλ ν λ²μ νλμ νμΌ μ΄λ¦ μ
λ°μ΄νΈλ§ μ§μν©λλ€. μ¬λ¬ νμΌμ μ΄λ¦μ λ°κΎΈλ €λ©΄ λ²ν·μμ νμΌ μ΄λ¦κ³Ό μΌμΉνλ νμΌ λͺ©λ‘μ μ‘°ννκ³ , μ΄λ¦μ λ°κΎΈλ €λ νμΌμμ νμΌ ID κ°μ μΆμΆν λ€μ, rename()
λ©μλμ κ°κ°μ νμΌ IDλ₯Ό κ°λ³μ μΌλ‘ νΈμΆνμ¬ μ λ¬ν©λλ€.
λ€μ μ½λ μμμλ fileId
λ³μκ° μ°Έμ‘°νλ νμΌ μ΄λ¦μ 'mongodbTutorial.zip'μΌλ‘ μ
λ°μ΄νΈνλ λ°©λ²μ λ³΄μ¬ μ€λλ€.
ObjectId fileId = new ObjectId("60345d38ebfcf47030e81cc9"); // Renames the file that has a specified "_id" value to "mongodbTutorial.zip" gridFSBucket.rename(fileId, "mongodbTutorial.zip");
μ΄ λ©μλμ λν μμΈν λ΄μ©μ rename() API μ€λͺ μλ₯Ό μ°Έμ‘°νμΈμ.
νμΌ μμ
delete()
λ©μλλ₯Ό νΈμΆνμ¬ GridFS λ²ν·μμ νμΌμ μ κ±°ν μ μμ΅λλ€. νμΌ μ΄λ¦μ΄ μλ νμΌ IDλ‘ νμΌμ μ§μ ν΄μΌ ν©λλ€.
μ°Έκ³
delete()
λ©μλλ ν λ²μ νλμ νμΌ μμ λ§ μ§μν©λλ€. μ¬λ¬ νμΌμ μμ νλ €λ©΄ λ²ν·μμ νμΌμ μ‘°ννκ³ μμ νλ €λ νμΌμμ νμΌ IDλ₯Ό μΆμΆν λ€μ delete()
λ©μλμ κ°κ°μ νμΌ IDλ₯Ό κ°λ³μ μΌλ‘ νΈμΆνμ¬ μ λ¬ν©λλ€.
λ€μ μ½λ μμμμλ fileId
λ³μκ° μ°Έμ‘°νλ νμΌμ μμ νλ λ°©λ²μ 보μ¬μ€λλ€.
ObjectId fileId = new ObjectId("60345d38ebfcf47030e81cc9"); // Deletes the file that has a specified "_id" value from the GridFS bucket gridFSBucket.delete(fileId);
μ΄ λ©μλμ λν μμΈν λ΄μ©μ delete() API μ€λͺ μλ₯Ό μ°Έμ‘°νμΈμ.
GridFS λ²ν· μμ
λ€μ μ½λ μμλ 'mydb'λΌλ λ°μ΄ν°λ² μ΄μ€μμ κΈ°λ³Έ GridFS λ²ν·μ μμ νλ λ°©λ²μ 보μ¬μ€λλ€. μ¬μ©μ μ§μ λͺ λͺ λ λ²ν·μ μ°Έμ‘°ν΄μΌ νλ κ²½μ° μ΄ κ°μ΄λ μ μ¬μ©μ μ§μ λ²ν·μ λ§λλ λ°©λ² μΉμ μ μ°Έμ‘°νμΈμ.
MongoDatabase database = mongoClient.getDatabase("mydb"); GridFSBucket gridFSBucket = GridFSBuckets.create(database); gridFSBucket.drop();
μ΄ λ©μλμ λν μμΈν λ΄μ©μ drop() API μ€λͺ μλ₯Ό μ°Έμ‘°νμΈμ.
μΆκ° 리μμ€
MongoDB Java λλΌμ΄λ² 리ν¬μ§ν 리μμ μ€ν κ°λ₯ν GridFSTour.javaμ μμ.