2. kisZH megoldása
Collection flexibilis sémája
A books collection a következő flexibilis sémájú dokumentumokkal rendelkezik:
{
"cim" : "A szürke ötven árnyalata"
, "kiadas_datuma" : 2012
, "szerzo" : "E. L. James"
, "tipus" : ["erotikus", "romantikus", "dráma"]
, "leiras" : "Az erotikus, mulattató és mélyen megindító..."
}
1. feladat
Listázd ki a 2000 előtt vagy 2010 után megjelent könyveket!
(A 2000 előtt vagy 2010 után 2 feltételnek minősül, ezért külön kell őket vennünk az $or tömbben.)
db.books.find(
{
"$or" : [
{
"kiadas_datuma" : {
"$lt" : 2000
}
}
, {
"kiadas_datuma" : {
"$gt" : 2010
}
}
]
}
);
2. feladat
Listázd ki azon könyveknek a szerzőjét és címét, amelyeknek a szerzője T betűvel kezdődik!
db.books.find(
{
"szerzo" : /^T/
}
, {
"szerzo" : 1
, "cim" : 1
}
);
3. feladat
Listázd ki az első 10 könyvet a kiadás dátuma szerint növekvő, míg a cím szerint csökkenő sorrendben!
(Ebben az esetben a limit() kurzorfüggvény meghívása csakis a sort() függvény meghívása után történhet, mert először a collection teljes tartalmát rendezzük növekvő sorrendbe, majd ezt követően limitáljuk az első 10-re a könyvek számát.)
db.books.find().sort({ "kiadas_datuma" : 1, "cim" : -1 }).limit( 10 );
4. feladat
Szúrj be 2 új dokumentumot a books collection-be egyetlen egy parancs kiadásával!
db.books.insertMany(
[
{
"cim" : "A sötét ötven árnyalata"
, "szerzo" : "E. L. James"
}
, {
"cim" : "A szabadság ötven árnyalata"
, "szerzo" : "E. L. James"
}
]
);
5. feladat
Töröld ki az összes olyan könyvet, amelynek a leírása tartalmazza a "könyv" szót!
(A remove() függvény 2. paramétere boolean típusú, s nem egy JSON, pláne nem egy {multi : true} JSON! Ne keverd az update()-tel! A remove() alapértelmezetten az összes kritériára illeszkedő dokumentumot törli, ellentétben az update()-tel.)
db.books.deleteMany(
{
"leiras" : /könyv/
}
);
6. feladat
Minden 2015 vagy azután kiadott könyv kiadási dátumát növeld meg 5-tel, ill. a típus tömbhöz add hozzá az "új" típust!
(A 2. paraméter JSON-ban egyszerre akár több módosító művelet ($push, $pull, $set, $inc, stb.) is megadható.)
db.books.updateMany(
{
"kiadas_datuma" : {
"$gte" : 2015
}
}
, {
"$inc" : {
"kiadas_datuma" : 5
}
, "$push" : {
"tipus" : "új"
}
}
);
7. feladat
Módosítsd a szerzőjét Anonymous-ra az összes olyan könyvnek, amelynek a kiadási dátuma nem 2015!
db.books.updateMany(
{
"kiadas_datuma" : {
"$ne" : 2015
}
}
, {
"$set" : {
"szerzo" : "Anonymous"
}
}
);