2016-12-19 1 views
3

Ich verwende MongoDB 3.2 und Java 1.8 Version und mongo-java Treiber. Ich habe Bilder in der Datenbank gespeichert. Ich kann Bild speichern, Bild lesen und alle Bilder lesen. Jetzt möchte ich Bild in GridFS aktualisieren. Ich möchte das Bild überschreiben, wenn der Name des Bildes gleich ist. Als ich versuchte, das Bild mit demselben Namen zu speichern, erhalte ich zwei Bilder. Ich verwende den folgenden Code, um das Bild zu speichern.Wie überschreiben Sie das Bild in MongoDB gridfs?

Kann mir jemand zu einer bestimmten Dokumentation Link/umgehen, so dass ich Bild überschreiben/aktualisieren kann.

Antwort

1

Das Aktualisieren einer Datei in GridFS ist nicht möglich. Jedes Dokument ist tatsächlich in Blöcke aufgeteilt und das Aktualisieren einer Datei ist nicht möglich. Daher würde ich vorschlagen, die Datei zu löschen, die Sie zuerst aktualisieren möchten, und dann die neue zu importieren.

GridFSBucket gridFSBucket = GridFSBuckets.create(database, imageCollection); 

GridFSBucket gridFSBucket = GridFSBuckets.create(database, imageCollection); 
InputStream streamToUploadFrom = new FileInputStream(new File(new_image_file)); 

Document query = new Document("metadata.name", "image1"); 
MongoCursor<Document> cursor = database.getCollection(imagecollection+".files").find(query).iterator(); 

while (cursor.hasNext()) { 
    Document document = cursor.next(); 
    Document metadata = document.get("metadata", Document.class); 

    ObjectId _id = document.getObjectId("_id"); 
    gridFSBucket.delete(_id); 

    GridFSUploadOptions options = new GridFSUploadOptions().metadata(metadata); 
    ObjectId fileId = gridFSBucket.uploadFromStream("image1", streamToUploadFrom, options); 
} 
Verwandte Themen