sql >> Databasteknik >  >> NoSQL >> MongoDB

Skapa en samling i MongoDB

När du skapar en databas i MongoDB är din databas i princip en tom behållare som du kan lägga till en eller flera samlingar till.

En samling är analog med en tabell i relationsdatabaser.

I relationsdatabaser kan du använda CREATE TABLE för att skapa varje tabell som du vill ha i databasen.

Men MongoDB är inte en relationsdatabas, och den lagrar sina data som dokument. Varje dokument lagras i en samling.

Den här artikeln visar hur du skapar en samling i MongoDB.

Två alternativ

Du har två alternativ för att skapa samlingar i MongoDB:

  • Underförstått
  • Explicit

Här är ett exempel på var och en.

Skapa en samling – implicit

Du kan skapa en samling implicit genom att helt enkelt lägga till ett dokument till en obefintlig samling. När du gör detta skapas samlingen om den inte redan finns.

Här är ett exempel på att implicit skapa en samling:

db.pets.insert({ name: "Fetch" })

Det skapar en samling som heter husdjur , och infogar ett dokument i det.

Egentligen skapar den bara samlingen om den inte redan finns. Om det redan finns infogar det helt enkelt dokumentet i den befintliga samlingen med det namnet.

I grund och botten ser syntaxen ut så här:

db.<collection>.insert()

Där är namnet på samlingen.

Skapa en samling – uttryckligen

Du kan också skapa samlingar explicit med db.createCollection() metod. Den här metoden låter dig ange olika alternativ, som att ställa in den maximala storleken eller reglerna för dokumentationsvalidering.

Detta är ungefär analogt med CREATE TABLE uttalande i SQL. Med det sagt kräver MongoDB inte att du anger kolumner, datatyper etc som du skulle behöva specificera med CREATE TABLE uttalande när du använder en relationsdatabas.

Här är ett exempel på hur du använder db.createCollection() metod för att skapa en samling:

db.createCollection("employees")

Resultat:

{ "ok" : 1 } 

I det här exemplet angav jag inga alternativ. Därför fanns det ingen verklig fördel med att skapa den som de här verserna som skapade den implicit (som i föregående exempel).

Men om du vill ange alternativ för din samling är det rätt väg att skapa den uttryckligen.

Här är ett exempel på hur du anger några alternativ när du skapar en samling:

db.createCollection(
    "products", 
    { 
        capped : true, 
        size : 7500500, 
        max : 7000 
    } 
)

Resultat:

{ "ok" : 1 } 

Här är en förklaring av alternativen jag gav i det här exemplet:

  • Den begränsade argument låter dig specificera om samlingens storlek ska begränsas eller inte (dvs. inte tillåts växa utöver en viss storlek). Om du anger true måste du också ange en maximal storlek i storlek fältet.
  • storleken argument anger en maximal storlek i byte för en begränsad samling. När en begränsad samling når sin maximala storlek tar MongoDB bort de äldre dokumenten för att göra plats åt de nya dokumenten. storlek fältet krävs för samlingar med tak och ignoreras för andra samlingar.
  • max argument låter dig ange det maximala antalet dokument som tillåts i den begränsade samlingen. Om en begränsad samling når storleken gräns innan det når det maximala antalet dokument, tar MongoDB bort gamla dokument. Se därför till att storlek argumentet är tillräckligt för att innehålla antalet dokument som anges med max argument.

Det här är tre av de olika alternativen som du kan ange med db.createCollection() metod.

Syntax och fler detaljer

Hela syntaxen (när detta skrivs) ser ut så här:

db.createCollection( <name>,
   {
     capped: <boolean>,
     autoIndexId: <boolean>,
     size: <number>,
     max: <number>,
     storageEngine: <document>,
     validator: <document>,
     validationLevel: <string>,
     validationAction: <string>,
     indexOptionDefaults: <document>,
     viewOn: <string>,
     pipeline: <pipeline>,
     collation: <document>,
     writeConcern: <document>
   }
)

Se db.createCollection() från den officiella MongoDB-dokumentationen för en detaljerad förklaring av varje alternativ.


  1. spring-boot redis :Hur ogiltigförklarar man alla sessioner för en användare?

  2. Varför Mongodb prestanda bättre på Linux än på Windows?

  3. MongoDB $degreesToRadians

  4. Vad är det korrekta sättet att hantera Redis-anslutning i Tornado? (Async - Pub/Sub)