MongoDB är en NoSQL-databas. Under NoSQL paraply lägger vi alla de databaser som inte använder SQL-språket för att söka efter data.
Nyckelegenskaper hos MongoDB
MongoDB är en mycket JavaScript-vänlig databas. Den visar ett JavaScript API som vi kan använda för att skapa databaser och samlingar av objekt (kallade dokument ).
Det är schemalöst , vilket innebär att du inte behöver fördefiniera en struktur för data innan du lagrar den.
I MongoDB kan du lagra vilket objekt som helst utan att behöva oroa dig för de särskilda fälten som utgör detta objekt och hur de ska lagras. Du säger åt MongoDB att lagra det objektet.
Data lagras i ett format som liknar JSON, men förbättrat för att tillåta lagring av mer än bara grundläggande datatyper.
Installation
Låt oss gå vidare och installera MongoDB. Du kan använda en av de många molnleverantörer som erbjuder åtkomst till en MongoDB-instans, men för lärandets skull installerar vi det själva.
Jag använder en Mac, så installationsinstruktionerna i den här handledningen hänvisar till det operativsystemet.
Öppna terminalen och kör:
brew tap mongodb/brew
brew install mongodb-community
Det är det.
Instruktionerna var inte för långa eller komplicerade, förutsatt att du vet hur man använder terminalen och hur man installerar Homebrew.
Installationen säger oss detta:
To have launchd start mongodb now and restart at login:
brew services start mongodb-community
Or, if you don't want/need a background service you can just run:
mongod --config /usr/local/etc/mongod.conf
Du kan välja att antingen starta MongoDB en gång och ha den igång för alltid som en bakgrundstjänst i din dator (det jag föredrar), eller så kan du köra det precis när du behöver det, genom att köra det senare kommandot.
Standardkonfigurationen för MongoDB är denna:
systemLog:
destination: file
path: /usr/local/var/log/mongodb/mongo.log
logAppend: true
storage:
dbPath: /usr/local/var/mongodb
net:
bindIp: 127.0.0.1
Loggar lagras i /usr/local/var/log/mongodb/mongo.log
och databasen lagras i /usr/local/var/mongodb
.
Som standard finns det ingen åtkomstkontroll, vem som helst kan läsa och skriva till databasen.
The Mongo Shell
Det bästa sättet att experimentera med MongoDB och börja interagera med det är genom att köra mongo
program, som startar MongoDB-skalet.
Du kan nu ange vilket kommando som helst som Mongo förstår.
Skapa en databas
När du börjar skapar Mongo en databas som heter test
. Kör db
i skalet för att berätta namnet på den aktiva databasen
För att ändra databasen, skriv bara use newname
och newname
databasen skapas omedelbart och skalet växlar till att använda det.
Använd show databases
för att lista de tillgängliga databaserna:
Som du kan se är something
databasen är inte listad, bara för att det ännu inte finns någon samling i den. Låt oss skapa en.
Samlingar
I MongoDB, en samling är motsvarigheten till en SQL-databastabell.
Du skapar en samling på den aktuella databasen genom att använda db.createCollection()
kommando. Det första argumentet är databasnamnet, och du kan skicka ett optionsobjekt som en andra parameter.
När du har gjort det, show databases
kommer att lista den nya databasen och show collections
kommer att lista samlingen.
Du kan också skapa en ny samling genom att använda den som en egenskap för db
objekt och anropar insert()
för att lägga till ett objekt till samlingen:
db.dogs.insert({ name: 'Roger' })
Lista objekt i en samling
För att visa objekten som lagts till i en samling, använd find()
metod:
Som du kan se finns det ytterligare en _id
egendom som vi lagt till. Det genereras automatiskt åt oss av MongoDB.
Lägg nu till fler hundar:
db.dogs.insert({ name: 'Buck' })
db.dogs.insert({ name: 'Togo' })
db.dogs.insert({ name: 'Balto' })
Anropar db.dogs.find()
ger oss alla poster, medan vi kan skicka en parameter för att filtrera och hämta en specifik post, till exempel med db.dogs.find({name: 'Roger'})
:
find()
metod returnerar en markör som du behöver iterera på.
Det finns en annan metod som är praktisk när du vet att du bara får en post, vilket är findOne()
, och det används på samma sätt. Om flera poster matchar en fråga, returnerar den bara den första.
Uppdatering av poster
För att uppdatera en post kan du använda update()
metod på en samling:
Ta bort poster
Du kan ta bort en post genom att anropa remove()
metod på en samling, skicka ett objekt för att hjälpa till att identifiera det:
För att ta bort alla poster från en samling, skicka ett tomt objekt:
db.dogs.remove({})