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

Dotaz na MongoDB GridFS?

GridFS funguje tak, že pro každý soubor ukládá určitý počet kusů. Tímto způsobem můžete doručovat a ukládat velmi velké soubory, aniž byste museli ukládat celý soubor do paměti RAM. Také to umožňuje ukládat soubory, které jsou větší než maximální velikost dokumentu. Doporučená velikost bloku je 256 kb.

Pole metadat souboru lze použít k uložení dalších metadat specifických pro soubor, což může být efektivnější než ukládání metadat v samostatném dokumentu. To značně závisí na vašich přesných požadavcích, ale pole metadat obecně nabízí velkou flexibilitu. Mějte na paměti, že některá zjevnější metadata jsou již součástí fs.files dokument, ve výchozím nastavení:

> db.fs.files.findOne();
{
    "_id" : ObjectId("4f9d4172b2ceac15506445e1"),
    "filename" : "2e117dc7f5ba434c90be29c767426c29",
    "length" : 486912,
    "chunkSize" : 262144,
    "uploadDate" : ISODate("2011-10-18T09:05:54.851Z"),
    "md5" : "4f31970165766913fdece5417f7fa4a8",
    "contentType" : "application/pdf"
}

Chcete-li skutečně přečíst soubor z GridFS, budete muset načíst souborový dokument z fs.files a bloky z fs.chunks . Nejúčinnějším způsobem, jak toho dosáhnout, je streamovat to do klienta kousek po bloku, takže nemusíte načítat celý soubor do paměti RAM. chunks kolekce má následující strukturu:

> db.fs.chunks.findOne({}, {"data" :0});
{
    "_id" : ObjectId("4e9d4172b2ceac15506445e1"),
    "files_id" : ObjectId("4f9d4172b2ceac15506445e1"),
    "n" : 0, // this is the 0th chunk of the file
    "data" : /* loads of data */
}

Pokud chcete použít metadata pole fs.files u svých dotazů se ujistěte, že rozumíte tečkové notaci, např.

> db.fs.files.find({"metadata.OwnerId": new ObjectId("..."), 
                    "metadata.ImageWidth" : 280});

také se ujistěte, že vaše dotazy mohou používat index pomocí explain() .



  1. Oprava „název indexu musí být řetězec“ při odstraňování více indexů v MongoDB

  2. Průvodce dotazy v Spring Data MongoDB

  3. Výukový program PyMongo:Testování selhání MongoDB ve vaší aplikaci Python

  4. Hledejte ve více kolekcích v MongoDB