MongoDB

installazione https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

mongod --dbpath /home/simon/mongofile  --port 9999 // avvia il server in locale (nel caso spegni il demone)
mongo --port 9999 // avvia il client

per il demone abbiamo:
sudo service mongod start
sudo service mongod stop
sudo tail -f /var/log/mongodb/mongod.log
db // attuale db in uso
show dbs // elenco db
show collections // elenco collection

use demo // cambio db
db.animals.find()
db.animals.insert({name:"delfino",color:"grigio",oceans:["atlatico","pacifico","indiano"]})
db.animals.insert({name:"pantera",color:"nero",zoos:[{name:"Zoo di Berlino",indirizzo:{via:"terrarracina ",civico:"23"}}]})
db.animals.find({name:"pantera"}).pretty()
var pantera = db.animals.findOne({name:"pantera"})
pantera.zampe=4
db.animals.save(pantera)

db.animals.save pesenta il codice javascript

help presenta tutte le funzioni



db.animals.findOne() un documento a caso
db.animals.findOne({name:"delfino"})
db.animals.findOne({name:"delfino"},color:true ) visualizza solo il colore

JSON

BSON

No Schema

Schema dinamico

$LT, $GT

db.score.insert({punteggio:10, nome:"Pino1"})
db.score.insert({punteggio:20, nome:"Pino2"})
db.score.insert({punteggio:50, nome:"Pino3"})
db.score.insert({punteggio:150, nome:"Pino4"})

db.score.find({punteggio:{$gt:20,$lt:150}})  // query con intervallo per avere gli estri $gte,$lte

$EXISTS, $TYPE e $REGEX

db.score.insert({punteggio:150, nome:"Pino4",cognome:"Giova"})

db.score.find({cognome:{$exists : true}})  // nella collection solo i documenti con il campo cognome presente

$OR,$AND

db.score.find({$or:[{nome:{$regex:"Pino1"}},{nome:{$regex:"Pino3"}}]})

db.score.find({$and:[{punteggio:{$lte:50}},{punteggio:{$gte:20}}]})

$ALL, $IN e $NIN

db.articolo.insert({titolo:"titolo1", tags:["sport", "finanza"]})
db.articolo.insert({titolo:"titolo2", tags:["sport", "ciclismo"]})
db.articolo.insert({titolo:"titolo2", tags:["cultura", "libri"]})

db.articolo.find({ tags:{$in:["cultura", "libri"]}})

La Ricerca e i Sotto-Documenti

db.rubrica.insert({nome:"Simon", telefono:{cellulare:"334123123", cas:"06/2223344" }})
{
        "_id" : ObjectId("5d42eb90f0c182509ced30c4"),
        "nome" : "Simon",
        "telefono" : {
                "cellulare" : "334123123",
                "cas" : "06/2223344"
        }
}


db.rubrica.find({"telefono.cellulare":"334123123"})

Limit, Sort (-1 descescente ,1 crescente), Skip e Count

db.score.find().sort({punteggio: -1}).limit(2)

Cursore

var cursore = db.score.find(); null;
while(cursore.hasNext()) printjson( cursore.next());

Update 1: sostituzione completa!

db.rubrica2.insert({ nome:"Pino1", cognome:"Cognome1"})
db.rubrica2.insert({ nome:"Pino2", cognome:"Cognome2"})
db.rubrica2.insert({ nome:"Pino3", cognome:"Cognome3"})
db.rubrica2.insert({ nome:"Pino4", cognome:"Cognome4"})

db.rubrica2.update({ condizione di selezione},{ cosa integralmente sostituisco})

db.rubrica2.update({nome:"Pino1"},{nome:"Pino123", cognome:"Cognome123"})
db.rubrica2.find({nome:"Pino123"})

Update 2: $set (se non presente lo inserisce) $unset per cancellare un campo

db.rubrica2.update({nome:"Pino2"},{ $set:{ cognome:"Cognome321"} })
db.rubrica2.find({nome:"Pino2"})
db.rubrica2.update({nome:"Pino2"},{ $unset:{ cognome: true} })
db.rubrica2.find({nome:"Pino2"})

Update 3: Upsert (se il documente non è presente lo inserisce)

db.rubrica2.find({nome:"Pino10"}) // non presente

db.rubrica2.update({nome:"Pino10"},{ $set:{ cognome:"Cognome10"} } , {upsert:true} )
db.rubrica2.find({nome:"Pino10"})

Update 4: Multi-Update

db.rubrica2.update({nome:{$exists:true}},{ $set:{ citta:"Roma"} } , {multi:true} ) // aggiunge a tutti i documenti col campo nome il campo citta con valore Roma

Remove e Drop

db.rubrica2.remove({nome:"Pino10"}) // cancella uno alla volta i documenti
db.rubrica2.drop() // cancella tutta lo collection