Bene, un "oggetto GridFS" in questo contesto significa il nome dell'oggetto archiviato nelle raccolte GridFS. La distinzione è forse meglio spiegata da --local
opzione nella pagina di manuale di mongofiles.
Quello che devi considerare qui è che quello che hai fatto è inviare elementi con lo "stesso" nome file usando l'utilità mongofiles. Come indicato nella pagina di manuale di quell'utilità, il comportamento predefinito per il put
(vedi comandi
) l'opzione è quella di creare una nuova voce all'interno del negozio. Questo può essere ignorato con --replace
opzione in modo che qualsiasi contenuto esistente venga trovato e sovrascritto con il nuovo contenuto che hai creato.
In breve, indipendentemente dal fatto che i file contengano o meno contenuti diversi, hai creato più cose con lo stesso "Nome oggetto". Per quanto riguarda l'utilità mongofiles, sa solo come recuperare tramite il "Nome oggetto", quindi recupererà solo il primo che trova, secondo le sue regole.
Ora nella maggior parte delle implementazioni API di GridFS, l'effettivo get
le operazioni sono in genere eseguite da _id
. Ogni "Oggetto" che hai creato in questo modo ha ancora il suo _id
univoco valore, quindi quando viene applicato, puoi ottenere l'"Oggetto" che desideri.
Alcune implementazioni API aggiungono metodi di tipo di query aggiuntivi per trovare per "nome file" o altre informazioni sui metadati. Ma per lo più non si preoccupano in quanto questi sono in realtà solo .find()
o .findOne()
le operazioni su qualsiasi raccolta contengono metadati e riferimenti del contenuto ( fs.files per impostazione predefinita ). Ciò fornisce una quantità più che ragionevole di modi per "trovare" un particolare oggetto ed emettere quel _id
valore tramite get
interfaccia di tale API.
Quindi, mentre mongofiles
è una bella utility per eseguire operazioni di base di tipo CRUD dalla riga di comando, è semplicemente un'utilità e non l'implementazione principale di "come farlo". Quindi, come utilità, fornisce una forma di "comodità" per impostare e ottenere oggetti, utilizzando la parte "nome file" dell'identificatore oggetto.
Vale anche la pena notare che dovresti tratta davvero un negozio GridFS proprio come un filesystem e mantieni i tuoi "nomi di file" univoci proprio come sarebbe richiesto in un filesystem.
Ma per quanto riguarda i mongofiles
utility, il "nome" è tutto ciò di cui hai bisogno per recuperare le informazioni. Cerca di non farlo, o usa davvero l'API della lingua scelta per fare il lavoro.