MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Wysyłasz zapytania do MongoDB GridFS?

GridFS działa, przechowując pewną liczbę porcji dla każdego pliku. W ten sposób możesz dostarczać i przechowywać bardzo duże pliki bez konieczności przechowywania całego pliku w pamięci RAM. Umożliwia to również przechowywanie plików, które są większe niż maksymalny rozmiar dokumentu. Zalecany rozmiar fragmentu to 256kb.

Pole metadanych pliku może służyć do przechowywania dodatkowych metadanych specyficznych dla pliku, co może być bardziej wydajne niż przechowywanie metadanych w osobnym dokumencie. Zależy to w dużej mierze od twoich dokładnych wymagań, ale ogólnie pole metadanych oferuje dużą elastyczność. Pamiętaj, że niektóre z bardziej oczywistych metadanych są już częścią fs.files dokument, domyślnie:

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

Aby faktycznie odczytać plik z GridFS, musisz pobrać dokument pliku z fs.files i porcje z fs.chunks . Najskuteczniejszym sposobem na to jest przesyłanie strumieniowe do klienta kawałek po kawałku, dzięki czemu nie trzeba ładować całego pliku do pamięci RAM. chunks kolekcja ma następującą strukturę:

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

Jeśli chcesz użyć metadata pole fs.files w przypadku zapytań upewnij się, że rozumiesz notację z kropkami, np.

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

upewnij się również, że Twoje zapytania mogą używać indeksu za pomocą explain() .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Aktualizuj dokumenty w MongoDB

  2. Jak zainstalować MongoDB w systemie Windows?

  3. Jak prawidłowo ponownie wykorzystać połączenie z Mongodb w aplikacjach i modułach NodeJs?

  4. Jak tworzyć aplikacje dla MongoDB i Redpanda przy użyciu Docker Compose

  5. Łączenie i tworzenie złączeń MongoDB za pomocą SQL:część 3