sql >> Database teknologi >  >> NoSQL >> MongoDB

Forespørger MongoDB GridFS?

GridFS fungerer ved at gemme et antal bidder for hver fil. På denne måde kan du levere og gemme meget store filer uden at skulle gemme hele filen i RAM. Dette giver dig også mulighed for at gemme filer, der er større end den maksimale dokumentstørrelse. Den anbefalede chunkstørrelse er 256 kb.

Filmetadatafeltet kan bruges til at gemme yderligere filspecifikke metadata, hvilket kan være mere effektivt end at gemme metadataene i et separat dokument. Dette afhænger i høj grad af dine præcise krav, men metadatafeltet tilbyder generelt meget fleksibilitet. Husk, at nogle af de mere åbenlyse metadata allerede er en del af fs.files dokument, som standard:

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

For rent faktisk at læse filen fra GridFS skal du hente fildokumentet fra fs.files og bidder fra fs.chunks . Den mest effektive måde at gøre det på er at streame dette til klienten stykke for stykke, så du ikke behøver at indlæse hele filen i RAM. chunks samling har følgende 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 */
}

Hvis du vil bruge metadata felt af fs.files for dine forespørgsler skal du sørge for at forstå priknotationen, f.eks.

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

sørg også for, at dine forespørgsler kan bruge et indeks ved hjælp af explain() .



  1. Kan ikke oprette forbindelse til MongoDB på grund af forkert URI

  2. Sådan indstilles featureCompatibilityVersion i MongoDB

  3. Spring Boot med Session/Redis Serialiseringsfejl med dårlige Active Directory Ldap-legitimationsoplysninger

  4. Hvilke tegn er IKKE tilladt i MongoDB-feltnavne?