Facebook
From Unreliable Hummingbird, 7 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 301
  1. # Zadanie 1
  2. # Utwórz kolekcję dokumentów o nazwie Film, a następnie utwórz n dokumentów w tej kolekcji. Każdy z
  3. # dokumentów powinien być opisany przez następujące pola:
  4. # • tytuł
  5. # • reżyser
  6. # • rok produkcji
  7. # • średnia ocena filmu (w skali od 1 do 10)
  8. # • producent – jako tablica dokumentów, każdy z dokumentów tej tablicy powinien być opisany poprzez pola:
  9. # nazwa producenta, kraj, oraz waga, która będzie określać wagę producenta (im niższa wartość tej wagi, tym
  10. # ważniejszą rolę pełnił producent w czasie powstawania filmu).
  11. # • oceny: tablica, która zwiera 3 ostatnie oceny filmu, każdy element tablicy to dokument z polami: data oceny
  12. # oraz wartość oceny (w zakresie od 1 do 10).
  13. db.createCollection("Film")
  14. db.Film.insert([
  15.         {
  16.                 tytul: 'Back to the Future',
  17.                 rezyser: 'Robert Zemeckis',
  18.                 rok_produkcji: 1985,
  19.                 srednia_ocena: 7.4,
  20.                 producent: [
  21.                         {
  22.                                 nazwa_producenta: 'Neil Canton',
  23.                                 kraj: 'USA',
  24.                                 waga: 1,
  25.                         },
  26.                         {
  27.                                 nazwa_producenta: 'Bob Gale',
  28.                                 kraj: 'USA',
  29.                                 waga: 2,
  30.                         },
  31.                         {
  32.                                 nazwa_producenta: 'Kathleen Kennedy     ',
  33.                                 kraj: 'USA',
  34.                                 waga: 3,
  35.                         }
  36.                 ],
  37.                 oceny: [
  38.                         {
  39.                                 data_oceny: '21.5.2015',
  40.                                 wartosc: 6,
  41.                         },
  42.                         {
  43.                                 data_oceny: '15.3.2016',
  44.                                 wartosc: 8,
  45.                         },
  46.                         {
  47.                                 data_oceny: '23.4.2016',
  48.                                 wartosc: 7,
  49.                         }
  50.                 ]
  51.         },
  52.  
  53.         {
  54.                 tytul: 'The Bourne Ultimatum',
  55.                 rezyser: 'Paul Greengrass',
  56.                 rok_produkcji: 2007,
  57.                 srednia_ocena: 7.8,
  58.                 producent: [
  59.                         {
  60.                                 nazwa_producenta: 'MP BETA Productions',
  61.                                 kraj: 'USA',
  62.                                 waga: 2,
  63.                         },
  64.                         {
  65.                                 nazwa_producenta: 'The Kennedy/Marshall Company',
  66.                                 kraj: 'USA',
  67.                                 waga: 2,
  68.                         },
  69.                         {
  70.                                 nazwa_producenta: 'Ludlum Entertainment',
  71.                                 kraj: 'USA',
  72.                                 waga: 2,
  73.                         }
  74.                 ],
  75.                 oceny: [
  76.                         {
  77.                                 data_oceny: '1.1.2016',
  78.                                 wartosc: 6,
  79.                         },
  80.                         {
  81.                                 data_oceny: '21.2.2016',
  82.                                 wartosc: 9,
  83.                         },
  84.                         {
  85.                                 data_oceny: '29.4.2016',
  86.                                 wartosc: 8,
  87.                         }
  88.                 ]
  89.         },
  90.  
  91.         {
  92.                 tytul: 'The Lord of the Rings: The Fellowship of the Ring',
  93.                 rezyser: 'Peter Jackson',
  94.                 rok_produkcji: 2001,
  95.                 srednia_ocena: 8.0,
  96.                 producent: [
  97.                         {
  98.                                 nazwa_producenta: 'WingNut Films',
  99.                                 kraj: 'USA',
  100.                                 waga: 1,
  101.                         },
  102.                         {
  103.                                 nazwa_producenta: 'The Saul Zaentz Company',
  104.                                 kraj: 'New Zealand',
  105.                                 waga: 2,
  106.                         },
  107.                 ],
  108.                 oceny: [
  109.                         {
  110.                                 data_oceny: '24.12.2015',
  111.                                 wartosc: 5,
  112.                         },
  113.                         {
  114.                                 data_oceny: '3.2.2016',
  115.                                 wartosc: 10,
  116.                         },
  117.                         {
  118.                                 data_oceny: '21.4.2016',
  119.                                 wartosc: 8,
  120.                         }
  121.                 ]
  122.         },
  123. ])
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131. db.createCollection("Film")
  132. db.Film.insert([
  133.         {
  134.                 tytul: 'Back to the Future',
  135.                 rezyser: 'Robert Zemeckis',
  136.                 rok_produkcji: 1985,
  137.                 srednia_ocena: 7.4,
  138.                 producent: [
  139.                         {
  140.                                 nazwa_producenta: 'Neil Canton',
  141.                                 kraj: 'USA',
  142.                                 waga: 1,
  143.                         },
  144.                         {
  145.                                 nazwa_producenta: 'Bob Gale',
  146.                                 kraj: 'USA',
  147.                                 waga: 2,
  148.                         },
  149.                         {
  150.                                 nazwa_producenta: 'Kathleen Kennedy     ',
  151.                                 kraj: 'USA',
  152.                                 waga: 3,
  153.                         }
  154.                 ],
  155.                 oceny: [
  156.                         {
  157.                                 data_oceny: Date(),
  158.                                 wartosc: 6,
  159.                         },
  160.                         {
  161.                                 data_oceny: Date(),
  162.                                 wartosc: 8,
  163.                         },
  164.                         {
  165.                                 data_oceny: Date(),
  166.                                 wartosc: 7,
  167.                         }
  168.                 ]
  169.         },
  170.  
  171.         {
  172.                 tytul: 'The Bourne Ultimatum',
  173.                 rezyser: 'Paul Greengrass',
  174.                 rok_produkcji: 2001,
  175.                 srednia_ocena: 7.8,
  176.                 producent: [
  177.                         {
  178.                                 nazwa_producenta: 'MP BETA Productions',
  179.                                 kraj: 'USA',
  180.                                 waga: 2,
  181.                         },
  182.                         {
  183.                                 nazwa_producenta: 'The Kennedy/Marshall Company',
  184.                                 kraj: 'USA',
  185.                                 waga: 2,
  186.                         },
  187.                         {
  188.                                 nazwa_producenta: 'Ludlum Entertainment',
  189.                                 kraj: 'USA',
  190.                                 waga: 2,
  191.                         }
  192.                 ],
  193.                 oceny: [
  194.                         {
  195.                                 data_oceny: Date(),
  196.                                 wartosc: 6,
  197.                         },
  198.                         {
  199.                                 data_oceny: Date(),
  200.                                 wartosc: 9,
  201.                         },
  202.                         {
  203.                                 data_oceny: Date(),
  204.                                 wartosc: 8,
  205.                         }
  206.                 ]
  207.         },
  208.  
  209.         {
  210.                 tytul: 'The Lord of the Rings: The Fellowship of the Ring',
  211.                 rezyser: 'Peter Jackson',
  212.                 rok_produkcji: 2001,
  213.                 srednia_ocena: 8.0,
  214.                 producent: [
  215.                         {
  216.                                 nazwa_producenta: 'WingNut Films',
  217.                                 kraj: 'USA',
  218.                                 waga: 1,
  219.                         },
  220.                         {
  221.                                 nazwa_producenta: 'The Saul Zaentz Company',
  222.                                 kraj: 'New Zealand',
  223.                                 waga: 2,
  224.                         },
  225.                 ],
  226.                 oceny: [
  227.                         {
  228.                                 data_oceny: Date(),
  229.                                 wartosc: 5,
  230.                         },
  231.                         {
  232.                                 data_oceny: Date(),
  233.                                 wartosc: 10,
  234.                         },
  235.                         {
  236.                                 data_oceny: Date(),
  237.                                 wartosc: 8,
  238.                         }
  239.                 ]
  240.         },
  241. ])
  242. # Zadanie 2
  243. # Wypisz zawartość kolekcji Film. Wypisując dokumenty tej kolekcji uporządkuj je malejąco według średniej oceny.
  244. # Dodatkowo dodaj polecenie forEach(printjson) or pretty(), które pozwoli na wyświetlenie dokumentu
  245. # w widoku dokumentu JSON.
  246. db.Film.find().sort( { srednia_ocena: -1 } ).pretty()
  247. # Zadanie 3
  248. # Wybierz wszystkie dokumenty z kolekcji Film, które były wyprodukowane po roku XXXX. Zwracane dokumenty
  249. # powinny zawierać tylko tytuł i rok produkcji.
  250. db.Film.find( { rok_produkcji: { $gt: 2000 } }, { tytul: 1, rok_produkcji: 1 } ).pretty()
  251. # Zadanie 4
  252. # Do dokumentu opisującego film o nazwie X dodaj dwie oceny filmu (wartość daty oceny powinna stanowić bieżąca
  253. # data). Uwaga: w tablicy oceny powinny się znaleźć tylko 3 ostatnie oceny.
  254. db.Film.update(
  255.         { tytul: 'The Lord of the Rings: The Fellowship of the Ring' },
  256.         {
  257.                 $push: {
  258.                         oceny: {
  259.                                 $each: [ { data_oceny: Date(), wartosc: 10 }, { data_oceny: Date(), wartosc: 3 } ],
  260.                                 $sort: { data_oceny: -1 },
  261.                                 $slice: 3
  262.                         }
  263.                 }
  264.         }
  265. )
  266. # Zadanie 5
  267. # Do wybranych dokumentow dodaj pole rodzaj, które będzie tablicą łańcuchów. Tablica powinna zawierać rodzaj
  268. # filmu (komedia, dramat, ect..).
  269. db.Film.update(
  270.                 { tytul: 'The Bourne Ultimatum' },
  271.                 { $set: { rodzaj: ['sensacyjny', 'akcja'] } }  
  272. )
  273. db.Film.update(
  274.                 { tytul: 'The Lord of the Rings: The Fellowship of the Ring' },
  275.                 { $set: { rodzaj: ['fantasy', 'przygodowy'] } }
  276. )
  277. # Zadanie 6
  278. # Wyznacz ile filmów jest produkowanych w roku. Dokument wynikowy powinien zawierać rok produkcji i liczbę
  279. # filmów. Wyświetl wynik w porządku malejącym względem liczby filmów.
  280. db.Film.aggregate([
  281.         {$group: {_id : "$rok_produkcji", number:  { $sum : 1}}},
  282.         {$sort: {number: -1}}
  283. ])
  284. # Dla każdego producenta wyznaczyć liczbę filmów jakie wyprodukował. Dokument wynikowy powinien składać
  285. # się z dwóch pól: _id z wartością reprezentującą nazwę producenta oraz liczba, określającą liczbę filmów
  286. db.Film.aggregate(
  287.         {$unwind: "$producent"},
  288.         {$group: {_id:"$producent.nazwa_producenta", liczba_filmow: {$sum: 1}}}
  289. )
  290. # Zadanie 8
  291. # Z kolekcji Film usuń te filmy, których średnia ocena jest niższa niż 2.
  292. db.Film.remove( { srednia_ocena: { $lt: 8 } } )
  293. # Zadanie 9
  294. # Utwórz indeks z porządkiem malejącym dla pola, które reprezentuje średnią ocenę filmu.
  295. db.Film.ensureIndex({srednia_ocena: -1})
  296. # Zadanie 10
  297. # Utwórz indeks kompozytowy składający się z dwóch pól: rok produkcji oraz średniej oceny filmu (rok produkcji:
  298. # porządek rosnący, średnia: malejący).
  299. db.Film.ensureIndex({rok_produkcji: 1, srednia_ocena: -1})
  300. # Zadanie 11
  301. # Utwórz indeks typu multikey dla pola waga w tablicy producent (dokument z kolekcji Film). Indeks powinien być
  302. # malejący.
  303. db.Film.ensureIndex({"producent.waga": -1})
  304. #do sprawdzenia zapytan
  305. db.Baza.....jakies_funkcje().....explain("executionStats")