10
votes

Querifier les gridfs de Mongodb?

J'ai un système de blogging qui stocke des fichiers téléchargés dans le système de gridfs. Le problème est que je ne comprends pas comment la questionner!

J'utilise la mangouste avec des nœuds qui ne prends pas encore en charge les gridfs, donc j'utilise le module de MongoDB réel pour les opérations de gridfs. Il ne semble pas y avoir un moyen d'interroger les fichiers métadonnées comme vous faites des documents dans une collection régulière.

Serait-il sage de stocker les métadonnées dans un document pointant vers l'objectid de la gridfs? Pour être facilement capable d'interroger?

Toute aide serait grandement appréciée, je suis un peu coincé: /


0 commentaires

4 Réponses :


0
votes

Les métadonnées sont stockées dans le champ de métadonnées. Vous pouvez la demander comme xxx


1 commentaires

Ce n'est probablement pas ce que l'OP attend. Cette syntaxe recherchera correspondant exactement correspondances du sous-document, c'est-à-dire que votre requête sera pas correspondre "MetaData": {"content_type": "Texte / HTML", " FOO ":" bar "} . En outre, l'exemple peut être déroutant car content_type fait partie de la structure fs.files , mais a un nom différent.



23
votes

Gridfs fonctionne en stockant un certain nombre de morceaux pour chaque fichier. De cette façon, vous pouvez livrer et stocker des fichiers très volumineux sans avoir à stocker tout le fichier en RAM. De plus, cela vous permet de stocker des fichiers plus grands que la taille maximale du document. La taille du morceau recommandé est de 256 Ko.

Le champ de métadonnées de fichier peut être utilisé pour stocker des métadonnées supplémentaires spécifiques à un fichier, qui peuvent être plus efficaces que de stocker les métadonnées dans un document séparé. Cela dépend fortement de vos besoins exacts, mais le domaine des métadonnées, en général, offre beaucoup de flexibilité. N'oubliez pas que certaines des métadonnées les plus évidentes font déjà partie du document Fs.Files , par défaut: xxx

pour lire réellement le fichier Depuis les gridfs, vous devrez récupérer le document de fichier à partir de fs.files et les morceaux de fs.chunks . Le moyen le plus efficace de le faire est de contourner cela au client Chunk-By-Chunk, vous n'avez donc pas à charger l'ensemble du fichier en RAM. La collection Morks a la structure suivante: xxx

si vous souhaitez utiliser le champ métadata de fs .files pour vos questions, assurez-vous de comprendre le Notation de points , par exemple xxx

Assurez-vous également que vos requêtes peuvent utiliser un index en utilisant expliquer () .


2 commentaires

Comment créer une création d'index utilisable sur un champ de métadonnées?


Vous pouvez simplement créer un index comme {fs.files.metadata.my_field: 1} ne pas avoir un schéma simplifie grandement certaines choses



7
votes

comme la Spécification dit, vous pouvez stocker ce que vous voulez dans les métadonnées Champ.

Voici comment un document de la collection de fichiers ressemble à: p>

Champs obligatoires forts> p>

db.fs.files.find({"metadata.some_info" : "sample"});


0 commentaires

2
votes

Je sais que la question ne pose pas de questions sur la manière Java d'interroger les métadonnées, mais ici, en supposant que vous ajoutez sexe comme champ de métadonnées: xxx < / p>


1 commentaires

Pourquoi les pouces vers le bas?