noSQL Andmebaas
MongoDB
MongoDB on dokument-orienteeritud andmebaasihaldussüsteem, mis salvestab andmeid JSON-laadses BSON-formaadis. Erinevalt relatsioonilistest andmebaasidest ei kasuta MongoDB fikseeritud skeemi, mis teeb selle paindlikuks ja hästi sobivaks suurte, muutuvate andmehulkade haldamiseks. MongoDB-d kasutatakse sageli veebirakendustes tänu selle skaleeritavusele ja kiirele andmetöötlusele.
Dokument (document)
Dokument on MongoDB andmeüksus, mis koosneb väljade ja väärtuste paaridest, sarnaselt JSON-objektile. Iga dokument võib sisaldada erinevat struktuuri ja tüüpi andmeid.
{
"nimi": "Alice",
"vanus": 30,
"email": "alice@example.com"
}
Kogu (collection)
Kogu on dokumentide kogu ehk dokumentide kogum, mis vastab ligikaudselt tabelile relatsioonilistes andmebaasides. Kõik dokumendid kogus salvestatakse ühiselt, kuid ei pea omama ühesugust struktuuri.
kasutajad kogu näide
{ "nimi": "Alice", "vanus": 30 }
{ "nimi": "Bob", "email": "bob@example.com" }
Käsud
--Näitab kõik andmebaasid
show databases
--valime/kasutame andmebaas, kui seda ei eksisteeri siis baas on loodud
use mongo
--loome uus kogu
db.createCollection("users");
--näitame kõik kogud
show collections




--kustutame andmebaas
db.dropDatabase()

--lühike variant
show dbs

--lisame uus dokument
db.users.insertOne({})

--otsi kõik dokumendid
db.users.find()

--lisame palju dokumentid
db.users.insertMany([
{name: "vasya", age: 28},
{name: "petya", age: 23},
{name: "dima", age: 21},
{name: "anton", age: 20},
{name: "artjom", age: 21},
])

--Näitame kõik
db.users.find()

--Otsi tingimusega vanuse järgi
db.users.find({age:21})


--otsi OR kasutamisega
db.users.find({$or:[{name:"petya"},{age:20}]})

--otsi väiksem kui/suurem kui
db.users.find({age:{$lt:21}})
--$lt - less than
--$lte - less than or equals
--$gt - greater than
--$gte - greather than or equals
--$ne - not equals

--näita kõik ja sorteeri vanuse järgi
db.users.find().sort({age:1})
-- pange -1 kui tahad kahanevas järjekorras

--näita ainult esimene 2
db.users.find().limit(2)
--uuenda andmed andmebaasis
db.users.update(
{name:"dima"},
{
$set: {
name: "elon mask",
age: 45
}
}
)

--nimeta ümber name rida
db.users.update(
{},
{
$rename: {
name: "fullname"
}
}
)

--kustuta dokumendid tingimusega
db.users.deleteOne({age:45})

--tehke palju operatsioonid ühe käsuga
db.users.bulkWrite([
{
insertOne: {
document: {name: "nastya", age: 18}
}
},
{
deleteOne: {
filter: {name: "petya"}
}
}
])
--loome uus kasutaja, kellel on one-to-many seos postiga
db.users.update(
{name: "nastya"},
{
$set: {
posts: [
{title: "javascript", text: "js top"},
{title: "mongo", text: "mongo database"}
]
}
}
)

--näita ainult kasutaja postid
db.users.findOne(
{name:"nastya"},
{posts:1}
)

--otsi kasutaja kellel on post nimega javascript
db.users.find(
{
posts: {
$elemMatch: {
title: "javascript"
}
}
}
)

--otsi kasutaja kellel on postid eksisteeri
db.users.find({posts: {$exists:true}})

Node.js MongoDB
1) Loo MongoDB Atlas konto
- Mine lehele https://www.mongodb.com/cloud/atlas
- Registreeru ja loo tasuta klaster (Free Tier)
2) Luba IP-aadressid
- Ava Atlasis oma klaster
- Mine jaotisesse Network Access
- Lisa oma IP-aadress või luba kõik: 0.0.0.0/0
3) Loo andmebaasi kasutaja
- Mine Database Access ja lisa kasutajanimi + parool
- Neid andmeid on vaja ühenduse loomiseks
4) Hangi ühenduse string
- Ava Clusters > Connect > Connect your application
- Vali draiveriks Node.js ja kopeeri ühenduse URI, nt:
mongodb+srv://<kasutaja>:<parool>@<klastri_nimi>.mongodb.net/?retryWrites=true&w=majority

5) Paigalda MongoDB kliendimoodul
npm install mongodb
Ühendu Node.js-is MongoDB-ga
Näiteks index.js fail:
const { MongoClient } = require('mongodb');
const uri = 'mongodb+srv://<kasutaja>:<parool>@<klastri_nimi>.mongodb.net/?retryWrites=true&w=majority';
const client = new MongoClient(uri);
async function connectDB() {
try {
await client.connect();
console.log('Ühendus MongoDB-ga loodud!');
} catch (err) {
console.error('Ühendus ebaõnnestus:', err);
} finally {
await client.close();
}
}
connectDB();