MongoDB

MongoDB — это современная база данных, которая хранит данные не в таблицах, а в виде документов (JSON-подобных объектов).

MongoDB on kaasaegne andmebaas, mis salvestab andmeid mitte tabelitesse, vaid dokumentidena (JSON-laadsed objektid).

MongoDB Community Edition – https://www.mongodb.com/products/self-managed/community-edition

Compass. The GUI for MongoDB  (graafiline töörist)- https://www.mongodb.com/products/tools/compass

Näita andmebaasi

Luua uus andmebaas

Lisada uus kollektsioon

Näita kogu kollektsiooni

Kustutada andmebaas

Andmebaasi kasutajad sisestavad

Leia kõik kasutajad on andmebaasist

funktsioon insertMany ja näide sellest, kuidas sõna

Funktsiooni leidmine vanuse järgi

Funktsioon $or ja vanus kasutajate leidmiseks

Funktsioon alla 18-aastaste kasutajate leidmiseks

Funktsioon kasutajate sortimiseks

Funktsioon kasutajate limiidiloendi sortimiseks

Funktsioon kasutaja leidmiseks spetsiaalse määrajaga

Funktsioon kasutaja nime ja vanuse muutmiseks

Ja kontrolli tulemust

Funktsioon kasutajate kustutamiseks ja järgmine ekraanipilt sellest tulemusest

Funktsioon uute kasutajate lisamiseks ja kasutajate kustutamiseks ühe koodiga

Ja kontrolli tulemust

Funktsioon inimeste postituste lisamiseks

Ja kontrolli tulemust

funktsioon kuidas näidata postitusi kasutajatele käsuga

Teine valik

Funktsioon näitab kõiki, kellel on postitusi

MongoDB cloud ühendamine node.js projektiga ja veebilehi näitimine index.html abi

index.js

const express = require("express");
const { MongoClient, ObjectId } = require("mongodb");
const path = require("path");

const app = express();
const PORT = 3000;

// TODO: замени на свой URI при необходимости
const client = new MongoClient("mongodb+srv://qwerty:123456789asd@cluster0.bvvpnjn.mongodb.net/");

app.use(express.json());
app.use(express.static(path.join(__dirname, "public")));

let users;

// старт подключения и поднятие сервера
(async () => {
    try {
        await client.connect();
        console.log("Connected to MongoDB");
        const db = client.db("testdb");
        users = db.collection("users");

        // Страница
        app.get("/", (_, res) => res.sendFile(path.join(__dirname, "public", "index.html")));

        // ---- REST API ----
        app.get("/api/users", async (_, res) => {
            const data = await users.find().sort({ _id: -1 }).toArray();
            res.json(data);
        });

        app.post("/api/users", async (req, res) => {
            const { name, age, email } = req.body || {};
            if (!name) return res.status(400).json({ error: "name is required" });
            const doc = { name, age: age ? Number(age) : null, email: email || "" };
            const result = await users.insertOne(doc);
            res.status(201).json({ _id: result.insertedId, ...doc });
        });

        app.put("/api/users/:id", async (req, res) => {
            const { id } = req.params;
            const { name, age, email } = req.body || {};
            const upd = {};
            if (name !== undefined) upd.name = name;
            if (age !== undefined) upd.age = Number(age);
            if (email !== undefined) upd.email = email;

            await users.updateOne({ _id: new ObjectId(id) }, { $set: upd });
            const after = await users.findOne({ _id: new ObjectId(id) });
            res.json(after);
        });

        app.delete("/api/users/:id", async (req, res) => {
            const { id } = req.params;
            await users.deleteOne({ _id: new ObjectId(id) });
            res.json({ ok: true });
        });

        app.listen(PORT, () => console.log(`Server running at http://localhost:${PORT}`));
    } catch (e) {
        console.error(e);
        process.exit(1);
    }
})();

public/index.html

<!doctype html>
<html lang="et">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width,initial-scale=1" />
  <title>Kasutajad</title>
  <link rel="stylesheet" href="/style.css" />
</head>
<body>
<div class="wrapper">
  <header class="topbar">
    <h1>Kasutajate haldus</h1>
    <button id="addDemo" class="btn ghost">+ demo</button>
  </header>

  <section class="card form-card">
    <h2>Lisa / muuda</h2>
    <form id="userForm">
      <input type="hidden" id="userId" />
      <div class="grid">
        <label class="field">
          <span>Nimi</span>
          <input id="name" placeholder="Janika" required />
        </label>
        <label class="field">
          <span>Vanus</span>
          <input id="age" placeholder="18" type="number" min="0" />
        </label>
        <label class="field grid-span-2">
          <span>E-post</span>
          <input id="email" placeholder="nimi@mail.com" type="email" />
        </label>
      </div>
      <div class="actions">
        <button class="btn primary" type="submit">Salvesta</button>
        <button class="btn" type="button" id="resetBtn">Lähtesta</button>
      </div>
    </form>
  </section>

  <section class="card">
    <div class="list-head">
      <h2>Kasutajate nimekiri</h2>
      <input id="search" class="search" placeholder="Otsi nime/e-posti järgi..." />
    </div>
    <div id="users" class="cards"></div>
  </section>
</div>

<template id="userCardTpl">
  <div class="user-card glass">
    <div class="avatar"></div>
    <div class="info">
      <div class="name"></div>
      <div class="meta"></div>
    </div>
    <div class="btns">
      <button class="btn ghost edit">Muuda</button>
      <button class="btn danger del">Kustuta</button>
    </div>
  </div>
</template>

<script src="/app.js"></script>
</body>
</html>

Lehel on funktsionaalsus, mis võimaldab andmebaasi lisada uue kasutaja, andmebaasist kasutaja kustutada, kasutajaid e-posti teel filtreerida, mis lihtsustab andmebaasis otsimist, lisada testimiseks kasutaja demoversiooni, pärast nupu vajutamist luuakse automaatselt juhuslike andmetega kasutaja.

See on struktuur meie projeekt

Testimine