MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Запитване на MongoDB GridFS?

GridFS работи, като съхранява определен брой парчета за всеки файл. По този начин можете да доставяте и съхранявате много големи файлове, без да се налага да съхранявате целия файл в RAM. Освен това това ви позволява да съхранявате файлове, които са по-големи от максималния размер на документа. Препоръчителният размер на парчето е 256 kb.

Полето за метаданни на файла може да се използва за съхраняване на допълнителни специфични за файла метаданни, което може да бъде по-ефективно от съхраняването на метаданни в отделен документ. Това до голяма степен зависи от вашите точни изисквания, но полето с метаданни като цяло предлага много гъвкавост. Имайте предвид, че някои от по-очевидните метаданни вече са част от fs.files документ, по подразбиране:

> 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"
}

За да прочетете действително файла от GridFS, ще трябва да извлечете файловия документ от fs.files и парчетата от fs.chunks . Най-ефективният начин да направите това е да предавате това към клиента парче по парче, така че да не се налага да зареждате целия файл в RAM. chunks колекцията има следната структура:

> 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 */
}

Ако искате да използвате metadata поле на fs.files за вашите заявки се уверете, че разбирате обозначението с точки, напр.

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

също така се уверете, че вашите заявки могат да използват индекс с помощта на explain() .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Експортирайте колекция MongoDB в JSON файл

  2. Достъп до MongoDB от Go

  3. Как да използвам spring data mongo @CompoundIndex с подколекции?

  4. Атомарност, изолация и паралелност в MongoDB

  5. Mongoose Опит за отваряне на незатворена връзка