From b8ec2efdeba975ecc36f42eb33d7a8f8472e5cf7 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 4 Oct 2022 17:56:12 +0200 Subject: [PATCH] I think I should not go on until bluelib 5 --- .idea/dataSources.xml | 12 +++++ pages/year4/bigdata/pratica.tsx | 92 +++++++++++++++++++++++++++++++-- 2 files changed, 100 insertions(+), 4 deletions(-) create mode 100644 .idea/dataSources.xml diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 0000000..48e1297 --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,12 @@ + + + + + mongo + true + com.dbschema.MongoJdbcDriver + mongodb://localhost:27017 + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/pages/year4/bigdata/pratica.tsx b/pages/year4/bigdata/pratica.tsx index 6b7757a..e920c9a 100644 --- a/pages/year4/bigdata/pratica.tsx +++ b/pages/year4/bigdata/pratica.tsx @@ -1,8 +1,10 @@ -import {Heading, Chapter, Box, ListUnordered, ListOrdered, Parenthesis, Idiomatic as I, BringAttention as B, UAnnotation as U, Dialog, Quote, Code} from "@steffo/bluelib-react" +import {Bluelib, Heading, Chapter, Box, ListUnordered, ListOrdered, Parenthesis, Idiomatic as I, BringAttention as B, UAnnotation as U, Dialog, Quote, Code, Anchor, Variable, Panel} from "@steffo/bluelib-react" import type { NextPage, NextPageContext } from 'next' import { Link } from '../../../components/link' +const r = String.raw + export async function getStaticProps(_context: NextPageContext) { return { props: {} @@ -62,10 +64,16 @@ const Page: NextPage = () => { Glossario di MongoDB - + Documenti +

+ Raccolte di dati in formato BSON (simil-JSON binario). +

+ + Come i record di un database relazionale! +
@@ -75,7 +83,7 @@ const Page: NextPage = () => { Insiemi di documenti senza uno schema fisso, ma con un indice in comune.

- Come le tabelle relazionali, ma più flessibili! + Come le tables relazionali, ma più flessibili!
@@ -85,6 +93,9 @@ const Page: NextPage = () => {

Insiemi di collezioni.

+ + È esattamente uguale al mondo relazionale. Non c'è molto da dire a riguardo. +
@@ -110,7 +121,7 @@ const Page: NextPage = () => { Inserimento di un dato come documento annidato all'interno di un documento.

- Più veloce a costo di spazio, per operazioni molto frequenti. + Fornisce data locality, quindi è più veloce per operazioni molto frequenti, ma a costo di spazio di archiviazione.

@@ -125,6 +136,79 @@ const Page: NextPage = () => {

+ + + Accedere a MongoDB + + + + Override + +

+ Il prof. consiglia di usare Robo 3T, ma è end-of-life. +

+

+ In questo sito userò invece la shell integrata a IntelliJ IDEA Ultimate. +

+

+ Tutte le differenze saranno evidenziate in magenta. +

+
+
+ + + + Creazione + + + Il metodo consigliato nelle slides, db.COLLEZIONE.insert(...), è deprecato. + +

+ È possibile inserire un documento all'interno di una collezione con: +

+ + db.COLLEZIONE
.insertOne(DOCUMENTO)
+
+

+ È possibile inserire tanti documenti all'interno della stessa collezione con: +

+ + db.COLLEZIONE
.insertMany([DOCUMENTO1, DOCUMENTO2, ...])
+
+
+ + + Ricerca + +

+ È possibile recuperare tutti i documenti di una collezione con: +

+ + db.COLLEZIONE.find() + +

+ È possibile effettuare filtraggio e proiezione tramite le opzioni FILTRI e PROIEZIONI di find: +

+ + db.COLLEZIONE.find({"{"}...FILTRI{"}"}, {"{"}...PROIEZIONI{"}"}) + +

+ È anche possibile effettuare ordinamenti e limitazioni: +

+ + db.COLLEZIONE
+ .find(...)
+ .sort({"{"}...CRITERI{"}"})
+ .limit(LIMITE)
+
+

+ Oppure recuperare un documento solo, invece che un array di documenti: +

+ + db.COLLEZIONE.findOne(...) + +
+
}