sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB - mongofiles

„Objekt GridFS“ v tomto kontextu znamená název objektu uloženého v kolekcích GridFS. Rozdíl možná nejlépe vysvětluje --local možnost na manuálové stránce mongofiles.

Zde musíte vzít v úvahu, že jste odeslali položky se "stejným" názvem souboru pomocí nástroje mongofiles. Jak je uvedeno v manuálové stránce pro tento nástroj, výchozí chování pro put (viz příkazy ) je vytvořit nový záznam v obchodě. Toto lze přepsat pomocí --replace možnost, aby byl jakýkoli existující obsah nalezen a přepsán novým obsahem, který jste vytvořili.

Stručně řečeno, bez ohledu na to, zda soubory obsahují různý obsah nebo ne, vytvořili jste několik věcí se stejným „jménem objektu“. Pokud jde o utilitu mongofiles, ta ví, jak načítat pouze podle "jména objektu", takže podle svých pravidel načte první, který najde.

Nyní ve většině implementací API GridFS je skutečným get operace se obvykle provádí pomocí _id . Každý "Objekt", který jste vytvořili tímto způsobem, má stále své vlastní jedinečné _id hodnotu, takže když se to použije, můžete získat "Objekt", který chcete.

Některé implementace API přidávají další metody typu dotazu, aby bylo možné vyhledávat podle „názvu souboru“ nebo jiných informací metadat. Ale většinou se neobtěžují, protože to jsou opravdu jen standardní .find() nebo .findOne() operace s jakoukoli kolekcí obsahují metadata obsahu a odkazy ( ve výchozím nastavení fs.files ). To poskytuje více než rozumné množství způsobů, jak „najít“ konkrétní objekt a vydat toto _id hodnotu prostřednictvím get rozhraní tohoto API.

Takže zatímco mongofiles je pěkný nástroj pro provádění základních operací typu CRUD z příkazového řádku, je to pouze nástroj a ne hlavní implementace „jak na to“. Takže jako nástroj poskytuje "pohodlnou" formu nastavení a získávání objektů, přičemž používá část "název souboru" identifikátoru objektu.

Za zmínku také stojí, že byste měli opravdu zacházejte s úložištěm GridFS stejně jako se souborovým systémem a udržujte své "názvy souborů" jedinečné tak, jak by to bylo vyžadováno v souborovém systému.

Ale pokud jde o mongofiles "název" je vše, co musíte pro získání informací pokračovat. Snažte se to nedělat, nebo k práci místo toho skutečně použijte vámi zvolené jazykové API.



  1. OpenSSL nebylo nalezeno na MacOS Sierra

  2. Duplikujte sbírku mongodb

  3. Jak předat argument Mongo Scriptu

  4. Neplatné schéma, očekává se `mongodb` nebo `mongodb+srv`