sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB - mongofiles

Bueno, un "objeto GridFS" en este contexto significa el nombre del objeto almacenado en las colecciones de GridFS. La distinción posiblemente se explica mejor por el -- local opción en la página del manual de mongofiles.

Lo que debe considerar aquí es que lo que ha hecho es enviar elementos con el "mismo" nombre de archivo utilizando la utilidad mongofiles. Como se indica en la página del manual de esa utilidad, el comportamiento predeterminado de put (ver comandos ) opción es crear una nueva entrada dentro de la tienda. Esto se puede anular con --replace opción para que cualquier contenido existente se encuentre y se sobrescriba con el nuevo contenido que ha creado.

En resumen, independientemente de si los archivos contienen contenido diferente o no, ha creado varias cosas con el mismo "Nombre de objeto". En lo que respecta a la utilidad mongofiles, solo sabe cómo buscar por el "Nombre del objeto", por lo que solo recuperará el primero que encuentre, según sus reglas.

Ahora, en la mayoría de las implementaciones API de GridFS, el get real las operaciones normalmente las realiza _id . Cada "Objeto" que creó de esta manera todavía tiene su propio _id único valor, por lo que cuando se aplica, puede obtener el "Objeto" que desea.

Algunas implementaciones de API agregan métodos de tipo de consulta adicionales para buscar por "nombre de archivo" u otra información de metadatos. Pero en su mayoría no se molestan ya que estos son realmente solo .buscar() o .findOne() las operaciones en cualquier colección contienen los metadatos y las referencias del contenido (fs.files por defecto). Esto proporciona una cantidad más que razonable de formas de "encontrar" un objeto en particular y emitir ese _id valor a través de get interfaz de esa API.

Entonces, mientras mongofiles es una buena utilidad para realizar operaciones básicas de tipo CRUD desde la línea de comandos, simplemente es una utilidad y no la implementación principal de "cómo hacerlo". Entonces, como utilidad, proporciona una forma "conveniente" de configurar y obtener objetos, utilizando la parte "nombre de archivo" del identificador de objeto.

También vale la pena señalar que debe realmente trate una tienda GridFS como un sistema de archivos y mantenga sus "nombres de archivo" únicos tal como se requeriría en un sistema de archivos.

Pero en cuanto a los mongofiles utilidad, el "nombre" es todo lo que tiene que seguir para recuperar la información. Trate de no hacer eso, o realmente use la API de su idioma elegido para hacer el trabajo en su lugar.