Üdvözöljük a MongoDB világában! Ha Ön fejlesztő, adatbázis-adminisztrátor vagy csak érdeklődő, aki szeretné mélyebben megismerni a NoSQL adatbázisok egyik legnépszerűbb képviselőjét, akkor jó helyen jár. A MongoDB nem csupán egy adatbázis, hanem egy komplex ökoszisztéma, amelynek központi eleme a hatékony kezelést biztosító parancssori felület. Ebben a cikkben a MongoDB hivatalos parancssori kliensét, a mongosh
-t vesszük górcső alá, és bemutatjuk a leghasznosabb parancsait, amelyekkel mesterien navigálhat, kezelhet és elemezhet adatokat.
A mongosh
, a modern és funkciókban gazdag MongoDB Shell, sokkal több, mint egy egyszerű parancssor. Interaktív környezetet biztosít a MongoDB adatbázisokkal való interakcióhoz, támogatja a JavaScriptet, intelligens automatikus kiegészítést nyújt, és segít a komplex műveletek egyszerűsítésében. Akár adatokkal dolgozik, akár adatbázisokat adminisztrál, a mongosh
az Ön nélkülözhetetlen eszköze lesz.
Miért éppen a mongosh
?
A régi mongo
shell utódjaként a mongosh
számos fejlesztést hozott magával. Modernebb felhasználói élményt nyújt, beleértve a szintaxiskiemelést, a beépített parancstörténetet és a jobb hibakezelést. Ráadásul kompatibilis az összes MongoDB verzióval, és sokkal robosztusabb keretrendszert biztosít a JavaScript alapú szkripteléshez. Lássuk tehát, melyek azok a kulcsfontosságú parancsok, amelyekkel a legtöbbet hozhatja ki ebből a sokoldalú eszközből!
1. Kezdőlépések: Csatlakozás és Alapvető Navigáció
Csatlakozás a MongoDB-hez
A mongosh
indítása egyszerű. Alapértelmezés szerint a localhost-on futó 27017-es porton lévő MongoDB példányhoz próbál csatlakozni. Ha az adatbázis máshol található, meg kell adnia a kapcsolódási stringet:
mongosh "mongodb://[felhasználó:jelszó@]host:port/[adatbázis]"
Például:
mongosh "mongodb://localhost:27017/admin"
Vagy távoli szerverhez:
mongosh "mongodb://felhasználó:jelszó@my_remote_host:27017/mydb"
A sikeres csatlakozás után a mongosh
promptja fogadja Önt, általában a jelenleg kiválasztott adatbázissal (pl. test>
).
Adatbázisok és Kollekciók Kezelése
show dbs
: Ezzel a paranccsal listázhatja az összes rendelkezésre álló adatbázist a MongoDB szerveren.use <adatbázisnév>
: Kiválasztja az adott nevű adatbázist. Ha az adatbázis nem létezik, a MongoDB automatikusan létrehozza, amikor először illeszt be adatot bele. Pl.:use mydatabase
db
: Kiírja a jelenleg kiválasztott adatbázis nevét.show collections
: Listázza az aktuális adatbázisban lévő összes kollekciót.db.createCollection("<kollekciónév>")
: Létrehoz egy új kollekciót a megadott névvel. Például:db.createCollection("users")
db.<kollekciónév>.drop()
: Töröl egy teljes kollekciót. Figyelem, ez visszafordíthatatlan művelet! Például:db.users.drop()
db.dropDatabase()
: Törli a teljes aktuális adatbázist. Óvatosan használja!
2. CRUD Műveletek: Adatok Kezelése
A CRUD (Create, Read, Update, Delete) az adatbázis műveletek alapja. A mongosh
rendkívül intuitív módon kezeli ezeket.
Adatok Beszúrása (Create)
db.<kollekciónév>.insertOne(<dokumentum>)
: Beszúr egyetlen dokumentumot egy kollekcióba.
db.users.insertOne({ name: "Anna", age: 30, city: "Budapest" })
db.<kollekciónév>.insertMany([<dokumentum1>, <dokumentum2>, ...])
: Több dokumentumot szúr be egyszerre.db.users.insertMany([
{ name: "Bence", age: 25, city: "Debrecen" },
{ name: "Csaba", age: 35, city: "Szeged" }
])
Adatok Lekérdezése (Read)
db.<kollekciónév>.find(<feltétel>, <vetítés>)
: A kollekcióban lévő dokumentumokat kérdezi le. A feltétel (query) egy JSON objektum, a vetítés (projection) pedig meghatározza, mely mezők jelenjenek meg (1-val igen, 0-val nem).
db.users.find({}) // Összes dokumentum lekérdezése
db.users.find({ age: { $gt: 28 } }) // Életkor > 28
db.users.find({ city: "Budapest" }, { name: 1, _id: 0 }) // Csak a név mező, Budapestiek közül
db.users.find().limit(2) // Csak az első 2
db.users.find().sort({ age: -1 }) // Rendezés életkor szerint csökkenőbe
db.users.find().pretty() // Szépen formázott kimenet
db.<kollekciónév>.findOne(<feltétel>)
: Az első olyan dokumentumot adja vissza, amely megfelel a feltételnek.db.users.findOne({ name: "Anna" })
Adatok Frissítése (Update)
Az update műveletekhez speciális operátorok, mint például a $set
, $inc
, $push
stb. szükségesek.
db.<kollekciónév>.updateOne(<feltétel>, <frissítési operátorok>)
: Egyetlen dokumentumot frissít.
db.users.updateOne(
{ name: "Anna" },
{ $set: { age: 31, "address.street": "Fő utca" } }
)
db.<kollekciónév>.updateMany(<feltétel>, <frissítési operátorok>)
: Több dokumentumot frissít, amelyek megfelelnek a feltételnek.db.users.updateMany(
{ city: "Budapest" },
{ $inc: { age: 1 } } // Minden budapesti lakos életkorát eggyel növeli
)
db.<kollekciónév>.replaceOne(<feltétel>, <új dokumentum>)
: Kicseréli az első olyan dokumentumot, amely megfelel a feltételnek, egy teljesen új dokumentumra.db.users.replaceOne(
{ name: "Bence" },
{ name: "Benedek", age: 26, hobbies: ["úszás", "olvasás"] }
)
Adatok Törlése (Delete)
db.<kollekciónév>.deleteOne(<feltétel>)
: Egyetlen dokumentumot töröl.
db.users.deleteOne({ name: "Csaba" })
db.<kollekciónév>.deleteMany(<feltétel>)
: Több dokumentumot töröl, amelyek megfelelnek a feltételnek.db.users.deleteMany({ age: { $lt: 20 } }) // Törli az összes 20 év alatti felhasználót
3. Indexelés: Teljesítményoptimalizálás
A MongoDB indexek kulcsfontosságúak a lekérdezések teljesítményének javításában, különösen nagy adathalmazok esetén. A mongosh
segítségével könnyedén kezelheti őket.
db.<kollekciónév>.createIndex(<index specifikáció>, <opciók>)
: Létrehoz egy új indexet.
db.users.createIndex({ city: 1 }) // Egy mezős index, növekvő sorrendben
db.users.createIndex({ name: 1, age: -1 }, { unique: true }) // Kompozit index, egyedi megszorítással
db.<kollekciónév>.getIndexes()
: Listázza az adott kollekció összes indexét.db.<kollekciónév>.dropIndex("<indexnév>")
: Töröl egy specifikus indexet. Az indexnevet általában a getIndexes()
kimenetéből kaphatja meg, vagy a létrehozáskor megadott mezőnév alapján generálja a MongoDB.db.users.dropIndex("city_1")
db.<kollekciónév>.dropIndexes()
: Törli az összes indexet egy kollekcióban, kivéve az alapértelmezett _id
indexet.4. Aggregációs Keretrendszer: Komplex Adatfeldolgozás
Az aggregációs keretrendszer lehetővé teszi komplex adatfeldolgozási feladatok elvégzését az adatokon, például csoportosítást, szűrést, átalakítást és összegzést. Egy „pipeline”-on keresztül adja meg a műveletek sorrendjét.
db.<kollekciónév>.aggregate([ <stage1>, <stage2>, ... ])
: Futtat egy aggregációs pipeline-t.
db.users.aggregate([
{ $match: { city: "Budapest" } }, // Szűrés: Csak budapestiek
{ $group: { _id: "$age", count: { $sum: 1 } } }, // Csoportosítás életkor szerint, megszámolja az azonos életkorúakat
{ $sort: { _id: 1 } } // Rendezés életkor szerint növekvőbe
])
Gyakori aggregációs fázisok (stages):
$match
: Dokumentumok szűrése.$project
: A kimeneti mezők kiválasztása, hozzáadása vagy kizárása.$group
: Dokumentumok csoportosítása kulcsértékek alapján.$sort
: Dokumentumok rendezése.$limit
: A továbbadandó dokumentumok számának korlátozása.$skip
: A dokumentumok kihagyása az elejéről.$lookup
: „Join” művelet végrehajtása más kollekciókkal (lásd: beágyazott dokumentumok helyett referenciák).
5. Adminisztratív Feladatok és Felhasználókezelés
Az adatbázis-adminisztrátorok számára is számos hasznos parancs áll rendelkezésre a mongosh
-ban.
db.getUsers()
: Listázza az aktuális adatbázisban lévő felhasználókat.db.createUser(<felhasználói objektum>)
: Létrehoz egy új felhasználót az adatbázisban.
db.createUser({
user: "developer",
pwd: passwordPrompt(), // Biztonságos jelszókérés
roles: [{ role: "readWrite", db: "mydb" }]
})
db.grantRolesToUser("<felhasználónév>", [<szerepek>])
: Szerepeket ad egy felhasználónak.db.revokeRolesFromUser("<felhasználónév>", [<szerepek>])
: Megvon szerepeket egy felhasználótól.db.changeUserPassword("<felhasználónév>", "<új jelszó>")
: Megváltoztatja egy felhasználó jelszavát.db.dropUser("<felhasználónév>")
: Töröl egy felhasználót.db.serverStatus()
: Részletes információt ad a MongoDB szerver állapotáról. Ez rendkívül hasznos a teljesítmény monitorozásához és a problémák diagnosztizálásához.db.currentOp()
: Megmutatja az éppen futó műveleteket a MongoDB szerveren.6. JavaScript Integráció és Szkriptelés
A mongosh
alapvetően egy JavaScript shell. Ez azt jelenti, hogy bármilyen érvényes JavaScript kódot futtathat benne, ami rendkívül rugalmassá teszi.
- Változók deklarálása és függvények definiálása:
let myVar = "Hello MongoDB!";
print(myVar);
function greet(name) {
return "Hello, " + name + "!";
}
greet("World");
mongosh
-ba a load()
paranccsal.load("my_script.js")
A my_script.js
fájlban lehet például dokumentumok importálása, adatbázis-tisztítás vagy jelentések generálása.
.editor
: Megnyit egy beépített szövegszerkesztőt, ahol kényelmesen írhat több soros JavaScript kódot, majd futtathatja azt. Ez különösen hasznos komplexebb lekérdezések vagy szkriptek esetén.7. Segítség és Hasznos Tippek
help()
: Általános súgót jelenít meg.db.help()
: Súgót ad az adatbázis-szintű parancsokhoz.db.<kollekciónév>.help()
: Súgót ad a kollekció-szintű parancsokhoz.- Automatikus kiegészítés (Tab): A
mongosh
intelligens automatikus kiegészítést nyújt. Nyomja meg aTab
gombot kétszer egy parancs vagy mezőnév begépelése közben, hogy megtekinthesse a lehetséges opciókat. - Parancstörténet: A fel és le nyilakkal navigálhat a korábbi parancsai között.
- Kimenet formázása: A
.pretty()
metódus használata afind()
parancs után olvashatóbb JSON kimenetet eredményez. A.toArray()
metódussal listaként kaphatja meg az eredményeket, ami szkriptelésnél hasznos. - Biztonság: Soha ne írjon be érzékeny adatokat (pl. jelszót) közvetlenül a parancssorba. Használja a
passwordPrompt()
függvényt, amikor felhasználót hoz létre vagy jelszót módosít, hogy interaktívan, biztonságosan kérje be a jelszót.
Összegzés
A MongoDB mongosh
parancssori kliense egy rendkívül sokoldalú és hatékony eszköz, amely nélkülözhetetlen mindenki számára, aki MongoDB adatbázisokkal dolgozik. A basic CRUD műveletektől kezdve, az indexelésen és az aggregációs keretrendszeren át, egészen a komplex adminisztratív feladatokig és a JavaScript alapú szkriptelésig mindenre kiterjed. A fenti parancsok és tippek elsajátításával nemcsak hatékonyabban fog dolgozni, hanem mélyebb betekintést nyerhet adatbázisainak működésébe is.
Ne feledje, a legjobb módja a tanulásnak a gyakorlás! Indítsa el a mongosh
-t, csatlakozzon egy adatbázishoz, és kezdjen el kísérletezni a parancsokkal. Fedezze fel a lehetőségeket, és tegye hatékonyabbá a mindennapi MongoDB feladatait!
Leave a Reply