[[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()