Wanneer u een database aanmaakt in MongoDB, is uw database in feite een lege container waaraan u een of meer collecties kunt toevoegen.
Een verzameling is analoog aan een tabel in relationele databases.
In relationele databases kunt u CREATE TABLE
. gebruiken om elke gewenste tabel in de database te maken.
Maar MongoDB is geen relationele database en slaat zijn gegevens op als documenten. Elk document wordt opgeslagen in een verzameling.
In dit artikel wordt uitgelegd hoe u een verzameling maakt in MongoDB.
Twee opties
Je hebt twee opties voor het maken van collecties in MongoDB:
- Impliciet
- Expliciet
Hier is een voorbeeld van elk.
Een verzameling maken – impliciet
U kunt impliciet een verzameling maken door eenvoudig een document toe te voegen aan een niet-bestaande verzameling. Wanneer u dit doet, wordt de verzameling gemaakt als deze nog niet bestaat.
Hier is een voorbeeld van het impliciet maken van een collectie:
db.pets.insert({ name: "Fetch" })
Dat creëert een verzameling genaamd pets
, en voegt er een document in.
Eigenlijk maakt het de verzameling alleen aan als deze nog niet bestaat. Als het al bestaat, voegt het het document gewoon in de bestaande verzameling met die naam in.
In principe gaat de syntaxis als volgt:
db.<collection>.insert()
Waar <collection>
is de naam van de collectie.
Een verzameling maken – expliciet
U kunt ook expliciet verzamelingen maken met de db.createCollection()
methode. Met deze methode kunt u verschillende opties specificeren, zoals het instellen van de maximale grootte of de documentatie-validatieregels.
Dit is een beetje analoog aan de CREATE TABLE
verklaring in SQL. Dat gezegd hebbende, vereist MongoDB niet dat u kolommen, gegevenstypen, enz. specificeert zoals u zou moeten specificeren met de CREATE TABLE
statement bij gebruik van een relationele database.
Hier is een voorbeeld van het gebruik van de db.createCollection()
methode om een collectie aan te maken:
db.createCollection("employees")
Resultaat:
{ "ok" : 1 }
In dit voorbeeld heb ik geen opties opgegeven. Daarom was er geen echt voordeel van het maken van het zoals deze verzen het impliciet creëren (zoals in het vorige voorbeeld).
Als je echter opties voor je verzameling wilt specificeren, dan is het expliciet maken ervan de beste keuze.
Hier is een voorbeeld van het specificeren van enkele opties bij het maken van een collectie:
db.createCollection(
"products",
{
capped : true,
size : 7500500,
max : 7000
}
)
Resultaat:
{ "ok" : 1 }
Hier is een uitleg van de opties die ik in dit voorbeeld heb gegeven:
- De
capped
argument stelt u in staat om te specificeren of de grootte van de collectie al dan niet gemaximeerd moet worden (d.w.z. niet toegestaan om verder te groeien dan een bepaalde grootte). Als utrue
opgeeft , moet u ook een maximumgrootte instellen in desize
veld. - De
size
argument stelt een maximale grootte in bytes in voor een gelimiteerde verzameling. Zodra een afgetopte verzameling de maximale grootte bereikt, verwijdert MongoDB de oudere documenten om ruimte te maken voor de nieuwe documenten. Desize
veld is verplicht voor gelimiteerde collecties en genegeerd voor andere collecties. - De
max
argument stelt u in staat om het maximale aantal documenten op te geven dat is toegestaan in de gelimiteerde verzameling. Als een gelimiteerde collectie desize
bereikt limiet voordat het het maximale aantal documenten bereikt, verwijdert MongoDB oude documenten. Zorg er daarom voor dat desize
argument is voldoende om het aantal documenten te bevatten dat is gespecificeerd met demax
argument.
Dit zijn drie van de verschillende opties die u kunt specificeren met de db.createCollection()
methode.
Syntaxis en meer details
De volledige syntaxis (op het moment van schrijven) ziet er als volgt uit:
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>
}
)
Zie db.createCollection()
uit de officiële MongoDB-documentatie voor een gedetailleerde uitleg van elke optie.