sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB - mongofiler

Ett "GridFS-objekt" betyder i detta sammanhang namnet på objektet som är lagrat i GridFS-samlingarna. Skillnaden förklaras möjligen bäst av -- lokal alternativet på mongofiles manualsida.

Vad du behöver tänka på här är att det du har gjort är att skicka in objekt med "samma" filnamn med hjälp av mongofiles-verktyget. Som noterats i manualsidan för det verktyget, är standardbeteendet för put (se kommandon ) alternativet är att skapa en ny post i butiken. Detta kan åsidosättas med --replace alternativet så att allt befintligt innehåll hittas och skrivs över med det nya innehållet du har skapat.

Kort sagt, oavsett om filerna innehåller olika innehåll eller inte så har du skapat flera saker med samma "Objektnamn". När det gäller mongofiles-verktyget vet det bara hur man hämtar genom "Objektnamnet" så det kommer bara att hämta det första det hittar, enligt dess regler.

Nu i de flesta API-implementeringar av GridFS, den faktiska get operationer utförs vanligtvis av _id . Varje "Objekt" du skapade på detta sätt har fortfarande sin egen unika _id värde, så när detta tillämpas kan du få det "Objekt" du vill ha.

Vissa API-implementeringar lägger till ytterligare frågetypmetoder för att hitta med "filnamn" eller annan metadatainformation. Men oftast stör de inte eftersom dessa egentligen bara är standard .find() eller .findOne() operationer på vilken samling som helst innehåller innehållets metadata och referenser (fs.files som standard). Detta ger ett mer än rimligt antal sätt att "hitta" ett visst objekt och utfärda det _id värde genom get gränssnittet för det API:et.

Så medan mongofiler är ett trevligt verktyg för att utföra grundläggande CRUD-operationer från kommandoraden, det är bara ett verktyg och inte huvudimplementeringen av "hur man gör det". Så som ett verktyg ger det en "bekvämlighet" form för att ställa in och hämta objekt, genom att använda "filnamn"-delen av objektidentifieraren.

Värt att notera är också att du bör Behandla verkligen en GridFS-butik precis som ett filsystem, och håll dina "filnamn" unika precis som skulle krävas i ett filsystem.

Men vad gäller mongofilerna verktyget är "namnet" allt du behöver gå vidare för att hämta information. Försök att inte göra det, eller använd verkligen ditt valda språk API för att göra jobbet istället.



  1. Mongo:samla $geoNear och $text inga resultat

  2. Aggregerad fråga i mongo fungerar, inte i Pymongo

  3. Validera heltalsvärden med mongoose

  4. Hur tar man bort inbäddat schemadokument i mongoose?