[[oktatas:adatbázis-kezelés:mongodb|< MongoDB]] ====== MongoDB - Shell ====== * **Szerző:** Sallai András * Copyright (c) 2013, Sallai András * Szerkesztve: 2013-2024 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== Kezdés ===== Feltelepül egy mongosh nevű kliens program. Indítsuk el: mongosh Megjelenik a következő várakozási jel: > Kilépés az exit utasítással lehetséges: > exit Kérdezzük le mi az aktuális adatbázis: > db test > Milyen adatbázisok vannak: > show dbs local (empty) > Új adatbázist úgy tudsz létrehozni, hogy használatba veszed: > use kekzrt switched to db kekzrt Az új adatbázis csak akkor marad meg, ha gyűjteményt teszünk bele. Ellenőrizd az aktuális adatbázist: > db kekzrt Segítség: > help Képernyőtörlés cls ===== Azonosítás ===== Ha a MongoDB azonosítással érhető el: mongosh -u root -p A jelszót bekéri. ===== Kollekciók és dokumentumok ===== A MongoDB adatbázis-kezelőben adatbázisokat hozunk létre. Az adatbázisokban gyűjteményekkel (collection) dolgozunk. A gyűjteményekbe dokumentumokat szúrunk be. Egy dokumentum: { name: "Fehér Lajos", city: "Szeged", salary: 395 } Egy gyűjtemény: [ { name: "Fehér Lajos", city: "Szeged", salary: 395 }, { name: "Kék Imre", city: "Szeged", salary: 394 }, { name: "Dór Gábor", city: "Pécs", salary: 393 } ] ===== Kollekciók ===== A kollekciókat létrehozhatjuk, vagy létrejönnek, automatikusan, amikor dokumentumot teszünk bele. Csatlakozzunk a zoldzrt adatbázishoz: use zoldzrt Nézzük meg az adatbázist. show dbs Az adatbázis még nem jelenik meg. Hozzuk létre az "employees" nevű gyűjteményt (kollekció): db.createCollection("employees") Nézzük meg újból az adatbázist: show dbs ===== Dokumentumok ===== Hozzunk létre két dokumentumot a munkas adatbázisban: use munkas db.employees.insertOne({ name : "Hana Ferenc", city: "Pécs", salary: 394 }) Változóba is tehetünk egy dokumentumot: a = { name : "Para Béla", city: "Miskolc", salary: 349 } b = { name : "Tengő Ernő", city: "Szeged", salary: 358 } Tegyük az employees gyűjteménybe: db.employees.insertOne(a) db.employees.insertOne(b) A kollekció automatikusan létrejönnek. Ellenőrizzük a gyűjteményeinket: show collections employees system.indexes Nézzük meg az employees gyűjteményünket a find() függvénnyel: db.employees.find() [ { _id: ObjectId("52619e731b723f1bb2cdbc8d"), name: 'Para Béla', city: 'Miskolc', salary: 349 }, { _id: ObjectId("52619e921b723f1bb2cdbc8e"), name: 'Tengő Ernő', city: 'Szeged', salary: 358 } ] ===== Adatbázis ===== Törlés: test> use school switched to db school school> db.dropDatabase() { ok: 1, dropped: 'school' } ===== A root felhasználó ===== Azonosíthatjuk magunkat a MongoDB Shell-en belül, a root felhasználóval. Ehhez válasszuk ki a az admin adatbázist, majd db.auth(): use admin db.auth("root", "titok") A kimenet ehhez hasonló: { ok: 1 } ===== Több dokumentum beszúrása ===== db.employees.insertMany([ {name: "János", city: "Szeged", salary: 394}, {name: "János", city: "Szeged", salary: 393}, {name: "Béla", city: "Pécs", salary: 393} ]); ===== Típusok ===== * szöveg * egész * valós * logikai * dátum db.employees.insertOne({ name: "Béla", group: 2, salary: 385.2, vehicle: true }); db.employees.insertOne({ name: "Béla", group: 2, salary: 385.2, vehicle: true, birth: new Date("1999-05-16") }); db.students.insertOne({ age: 28, gpa: 3.2, fullTime: false, registerDate: new Date(), gradutionDate: null, courses: ["CSharp", "Python", "Java"], address: { street: "Tavasz u. 23", city: "Szeged", zip: 3922}}) A következő adatok jelennek meg: [ { _id: ObjectId('65d0a462adb37355583dacd2'), age: 28, gpa: 3.2, fullTime: false, registerDate: ISODate('2024-02-17T12:19:46.547Z'), gradutionDate: null, courses: [ 'CSharp', 'Python', 'Java' ], address: { street: 'Tavasz u. 23', city: 'Szeged', zip: 3922 } } ] ===== Rendezés ===== Készítsünk egy adatbázist: use barbt db.employees.insertMany([ {name: "Vidám Irén", city: "Szeged", salary: 394}, {name: "Erős István", city: "Szeged", salary: 393}, {name: "Csengő Mária", city: "Pécs", salary: 393}, {name: "Lépes Lajos", city: "Pécs", salary: 393}, {name: "Dór Ilona", city: "Szolnok", salary: 397}, {name: "Fehér Károly", city: "Pécs", salary: 396}, {name: "Csont Elvira", city: "Pécs", salary: 393}, ]) db.employees.find().sort({name: 1}) Fordítva: db.employees.find().sort({name: -1}) Fizetés szerint: db.employees.find().sort({salary: 1}) ===== Keresés ===== db.employees.find({name: "Fehér Károly"}) db.employees.find({city: "Pécs", salary: 393}) Milyen mezők jelenjenek meg: barbt> db.employees.find({}, {_id: false, name: true, city: true}) [ { name: 'Vidám Irén', city: 'Szeged' }, { name: 'Erős István', city: 'Szeged' }, { name: 'Csengő Mária', city: 'Pécs' }, { name: 'Lépes Lajos', city: 'Pécs' }, { name: 'Dór Ilona', city: 'Szolnok' }, { name: 'Fehér Károly', city: 'Pécs' }, { name: 'Csont Elvira', city: 'Pécs' } ] ===== update ===== db.employees.updateOne({name: "Fehér Károly"}, {$set:{salary: 399}}) db.employees.updateOne({_id: ObjectId("65d0a331adb37355583daccd")}, {$set:{salary: 399}}) Törlés: db.employees.updateOne({name: "Fehér Károly"}, {$unset:{salary: ""}}) Mindenki fizetése: db.employees.updateMany({}, {$set:{salary: 395}}) ===== Törlés ===== db.employees.deleteOne({name: "Nagy Ernő"}) db.employees.deleteMany({city: "Szeged"}) db.employees.deleteMany({birth: {$exists:false}}) ===== Operátorok ===== db.employees.find({city: {$ne:"Szeged"}}) db.employees.find({salary: {$lt:396}}) db.employees.find({salary: {$lte:396}}) db.employees.find({salary: {$gt:396}}) db.employees.find({salary: {$gte:396}}) db.employees.find({salary: {$gt:394, $lte:396}}) Benne van? db.employees.find({name: {$in:["Bar Ferenc", "Lór Árpád", "Csoda Ernő"]}}) ===== Logikai operátorok ===== db.employees.find($and: [{city:"Szeged", salary:{$lte:395}]) db.employees.find($or: [{city:"Szeged", salary:{$lte:395}]) db.employees.find($nor: [{city:"Szeged", salary:{$lte:395}]) db.employees.find({salary:{$not:{$gte:395}}}) ===== Indexek ===== db.employees.find({name:"Erős István"}).explain("executionStats") db.employees.createIndex({name: 1}) db.employees.find({name:"Erős István"}).explain("executionStats") db.employees.getIndexes() db.employees.dropIndex("name_1") ===== Kollekciók ===== show collections db.createCollection("teachers") ^ Mező ^ Típus ^ Leírás ^ | capped | boolean | Opcionális. Fix méreteű \\ Ha beállítjuk, meg kell adni a maximum size mezőt is. | | size | number | Opcionális. Kollekció maximális mérete bájtban. \\ Ha a gyűjtemény eléri a maximális méretet, \\ a MongoDB eltávolítja a régebbi dokumentumokat \\ Ha be van állítva méret korlát, akkor ezt \\ a mezőt is meg kell adni. Más gyűjteményeknél figyelmen \\ kívül lesz hagyva. | | max | number | Dokumentumok maximális száma. | db.createCollection("teachers", { capped:true, // Fix méretű gyűjtemény size:1024000, // Gyűjtemény maximális mérete max:100 // Dokumentumok maximális száma },{ autoIndexId:false //automatikus index azonosító } }) Több információ: * https://www.mongodb.com/docs/manual/reference/method/db.createCollection/ (2024) Törlés db.crateCollection("valamik") db.valamik.drop()