„Obiekt GridFS” w tym kontekście oznacza nazwę obiektu przechowywanego w kolekcjach GridFS. To rozróżnienie jest prawdopodobnie najlepiej wyjaśnione przez -- lokalny
na stronie podręcznika mongofiles.
Musisz wziąć pod uwagę, że to, co zrobiłeś, to przesłanie elementów z „taką samą” nazwą pliku za pomocą narzędzia mongofiles. Jak zauważono na stronie podręcznika tego narzędzia, domyślne zachowanie dla put
(patrz polecenia
) opcja polega na utworzeniu nowego wpisu w sklepie. Można to zmienić za pomocą --replace
opcję, aby wszelkie istniejące treści zostały znalezione i zastąpione nową treścią, którą utworzyłeś.
Krótko mówiąc, niezależnie od tego, czy pliki zawierają różne treści, czy nie, stworzyłeś kilka rzeczy o tej samej „Nazwie obiektu”. Jeśli chodzi o narzędzie mongofiles, potrafi ono pobierać tylko według „Nazwy obiektu”, więc po prostu pobierze pierwszy znaleziony zgodnie z własnymi zasadami.
Teraz w większości implementacji API GridFS, rzeczywisty pobierz
operacje są zazwyczaj wykonywane przez _id
. Każdy utworzony w ten sposób „Obiekt” nadal ma swój unikalny _id
wartość, więc gdy to zostanie zastosowane, możesz uzyskać żądany „obiekt”.
Niektóre implementacje API dodają dodatkowe metody typu zapytania w celu wyszukiwania według „nazwy pliku” lub innych informacji metadanych. Ale przeważnie nie przeszkadzają, ponieważ tak naprawdę są to tylko standardowe .find()
lub .findOne()
operacje na dowolnej kolekcji przechowują metadane treści i referencje (domyślnie fs.files). Zapewnia to więcej niż rozsądną ilość sposobów na „znalezienie” określonego obiektu i wydanie tego _id
wartość poprzez pobierz
interfejs tego API.
Więc podczas gdy mongofiles
jest fajnym narzędziem do wykonywania podstawowych operacji typu CRUD z wiersza poleceń, jest po prostu narzędziem, a nie główną implementacją "jak to zrobić". Tak więc jako narzędzie zapewnia "wygodną" formę ustawiania i pobierania obiektów, używając części "filename" identyfikatora obiektu.
Warto również zauważyć, że powinno się naprawdę traktuj magazyn GridFS jak system plików i utrzymuj swoje "nazwy plików" unikatowe, tak jak byłoby to wymagane w systemie plików.
Ale jeśli chodzi o mongofile
narzędzie, "imię" to wszystko, co musisz zrobić, aby uzyskać informacje. Spróbuj tego nie robić lub naprawdę użyj interfejsu API wybranego języka do wykonania pracy.