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

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();