MongoDB GridFS abfragen?

8

Ich habe ein Blogging-System, das hochgeladene Dateien im GridFS-System speichert. Problem ist, ich verstehe nicht, wie man es abfragt!

Ich benutze Mongoose mit NodeJS, die GridFS noch nicht unterstützt, also benutze ich das eigentliche mongodb-Modul für die GridFS-Operationen. Es gibt SEEM nicht, um die Metadaten der Dateien abzufragen, wie Sie Dokumente in einer normalen Sammlung machen.

Wäre es sinnvoll, die Metadaten in einem Dokument zu speichern, das auf die GridFS-Objekt-ID verweist? leicht abfragen zu können?

Jede Hilfe wäre sehr geschätzt, ich bin irgendwie festgefahren: /

    
Quinton Pike 15.12.2011, 07:33
quelle

4 Antworten

18

GridFS funktioniert durch Speichern einer Anzahl von Blöcken für jede Datei. Auf diese Weise können Sie sehr große Dateien bereitstellen und speichern, ohne die gesamte Datei im Arbeitsspeicher ablegen zu müssen. Außerdem können Sie damit Dateien speichern, die größer als die maximale Dokumentgröße sind. Die empfohlene Chunk-Größe ist 256 KB.

Das Dateimetadatenfeld kann zum Speichern zusätzlicher dateispezifischer Metadaten verwendet werden, was effizienter sein kann als das Speichern der Metadaten in einem separaten Dokument. Dies hängt stark von Ihren genauen Anforderungen ab, aber das Metadatenfeld bietet im Allgemeinen viel Flexibilität. Beachten Sie, dass einige der offensichtlicheren Metadaten bereits standardmäßig im Dokument fs.files enthalten sind:

%Vor%

Um die Datei tatsächlich aus GridFS zu lesen, müssen Sie das Dateidokument von fs.files und die Teile von fs.chunks holen. Am effizientesten ist es, dies chunkweise an den Client zu übertragen, sodass Sie nicht die gesamte Datei in den Arbeitsspeicher laden müssen. Die chunks -Sammlung hat die folgende Struktur:

%Vor%

Wenn Sie das metadata -Feld von fs.files für Ihre Abfragen verwenden möchten, vergewissern Sie sich, dass Sie die verstehen Punktnotation , zB

%Vor%

Stellen Sie außerdem sicher, dass Ihre Abfragen einen Index mit explain() verwenden können.

    
mnemosyn 15.12.2011, 09:26
quelle
6

Wie die Spezifikation sagt, können Sie im Metadatenfeld speichern, was Sie wollen.

>

So sieht ein Dokument aus der Dateisammlung aus:

Pflichtfelder

%Vor%

Optionale Felder

%Vor%

Speichern Sie also alles, was Sie wollen, in den Metadaten und fragen Sie es normalerweise wie in MongoDB ab:

%Vor%     
alessioalex 15.12.2011 09:29
quelle
1

Ich weiß, dass die Frage nicht nach der Java-Methode für die Abfrage von Metadaten fragt, aber hier ist die Annahme, dass Sie gender als Metadatenfeld hinzufügen:

%Vor%     
javaauthority 02.06.2015 16:09
quelle
0

Metadaten werden im Metadatenfeld gespeichert. Sie können es wie

abfragen %Vor%     
Nat 15.12.2011 08:06
quelle

Tags und Links