Podstawowe Operacje CRUD w MongoDB z JavaScript

W tej lekcji skupimy się na pełnym wdrożeniu operacji CRUD (Create, Read, Update, Delete) w MongoDB za pomocą JavaScript. W poprzedniej lekcji nauczyliśmy się, jak podłączyć się do bazy danych i dodać pierwszy dokument. Teraz zagłębimy się w bardziej zaawansowane operacje, wykonując w jednym kodzie dodawanie, odczytywanie, aktualizowanie oraz usuwanie danych. Wszystko to będzie zaimplementowane w ramach jednego przykładu, aby zrozumieć, jak działa komunikacja z MongoDB w Node.js.

Przykład kodu – Operacje CRUD w MongoDB

Otwórz swój projekt i utwórz nowy plik o nazwie crud.js. Wprowadź poniższy kod i zwróć uwagę na komentarze, które wyjaśnią każdy krok i operację:

// Importujemy MongoClient z biblioteki mongodb, aby móc nawiązać połączenie z bazą danych
const { MongoClient } = require('mongodb');

// Ustawiamy URL połączenia do lokalnej instancji MongoDB
const url = 'mongodb://localhost:27017';

// Definiujemy nazwę bazy danych, z którą będziemy pracować
const dbName = 'myDatabase';

async function main() {
  // Tworzymy nowego klienta MongoDB, podając mu URL do naszej bazy danych
  const client = new MongoClient(url);

  try {
    // Nawiązujemy połączenie z serwerem MongoDB
    await client.connect();
    console.log('Połączono z MongoDB!');

    // Uzyskujemy dostęp do bazy danych o nazwie "myDatabase"
    const db = client.db(dbName);

    // Uzyskujemy dostęp do kolekcji "users" (odpowiednik tabeli w relacyjnej bazie danych)
    const collection = db.collection('users');

    // --- CREATE: Dodawanie dokumentów do kolekcji ---

    // Dodajemy jeden dokument do kolekcji "users"
    const newUser = { name: 'Anna', age: 28, email: 'anna@example.com' };
    const insertResult = await collection.insertOne(newUser);
    console.log('Dodano dokument o ID:', insertResult.insertedId); // Wyświetlamy ID dodanego dokumentu

    // Dodajemy wiele dokumentów jednocześnie
    const users = [
      { name: 'Krzysztof', age: 34, email: 'krzysztof@example.com' },
      { name: 'Monika', age: 22, email: 'monika@example.com' },
      { name: 'Jan', age: 30, email: 'jan@example.com' }
    ];
    const insertManyResult = await collection.insertMany(users);
    console.log('Dodano dokumenty o ID:', insertManyResult.insertedIds); // Wyświetlamy ID dodanych dokumentów

    // --- READ: Pobieranie dokumentów z kolekcji ---

    // Znajdujemy jeden dokument, który ma pole "name" równe "Anna"
    const user = await collection.findOne({ name: 'Anna' });
    console.log('Znaleziony dokument:', user); // Wyświetlamy znaleziony dokument

    // Znajdujemy wszystkie dokumenty, w których "age" jest większe niż 25
    const usersOver25 = await collection.find({ age: { $gt: 25 } }).toArray();
    console.log('Dokumenty z wiekiem powyżej 25 lat:', usersOver25); // Wyświetlamy tablicę znalezionych dokumentów

    // --- UPDATE: Aktualizowanie dokumentów w kolekcji ---

    // Aktualizujemy jeden dokument - ustawiamy nową wartość pola "age" dla dokumentu, w którym "name" to "Anna"
    const updateResult = await collection.updateOne(
      { name: 'Anna' }, // Warunek, który określa, który dokument zaktualizować
      { $set: { age: 29 } } // Aktualizacja: ustawiamy pole "age" na 29
    );
    console.log('Liczba zaktualizowanych dokumentów:', updateResult.modifiedCount); // Wyświetlamy liczbę zaktualizowanych dokumentów

    // Aktualizujemy wiele dokumentów jednocześnie - dodajemy nowe pole "ageGroup" dla wszystkich dokumentów, w których "age" jest mniejsze niż 30
    const updateManyResult = await collection.updateMany(
      { age: { $lt: 30 } }, // Warunek: wszyscy użytkownicy, których "age" jest mniejsze niż 30
      { $set: { ageGroup: 'Młody' } } // Dodajemy pole "ageGroup" z wartością "Młody"
    );
    console.log('Liczba zaktualizowanych dokumentów:', updateManyResult.modifiedCount); // Wyświetlamy liczbę zaktualizowanych dokumentów

    // --- DELETE: Usuwanie dokumentów z kolekcji ---

    // Usuwamy jeden dokument - usuwa dokument, w którym "name" to "Anna"
    const deleteResult = await collection.deleteOne({ name: 'Anna' });
    console.log('Liczba usuniętych dokumentów:', deleteResult.deletedCount); // Wyświetlamy liczbę usuniętych dokumentów

    // Usuwamy wiele dokumentów jednocześnie - usuwa wszystkie dokumenty, w których "age" jest mniejsze niż 25
    const deleteManyResult = await collection.deleteMany({ age: { $lt: 25 } });
    console.log('Liczba usuniętych dokumentów:', deleteManyResult.deletedCount); // Wyświetlamy liczbę usuniętych dokumentów

  } catch (error) {
    console.error('Błąd podczas operacji na bazie danych:', error); // Obsługa błędów, wyświetla komunikat błędu w konsoli
  } finally {
    // Zawsze zamykamy

Podsumowanie

W powyższym kodzie zaimplementowaliśmy pełny zestaw operacji CRUD w MongoDB za pomocą JavaScript:

  1. CREATE (Dodawanie): Użyliśmy insertOne i insertMany do dodawania pojedynczego i wielu dokumentów do kolekcji.
  2. READ (Odczytywanie): Użyliśmy findOne do znalezienia jednego dokumentu oraz find do pobrania wielu dokumentów na podstawie określonych kryteriów.
  3. UPDATE (Aktualizowanie): Użyliśmy updateOne do aktualizacji jednego dokumentu i updateMany do aktualizacji wielu dokumentów jednocześnie.
  4. DELETE (Usuwanie): Użyliśmy deleteOne do usunięcia pojedynczego dokumentu oraz deleteMany do usunięcia wielu dokumentów spełniających określone kryteria.

Dzięki tym operacjom możemy zarządzać danymi w bazie MongoDB w sposób elastyczny i efektywny. W kolejnych lekcjach dowiemy się więcej o zaawansowanych funkcjach MongoDB, takich jak agregacje i indeksowanie, aby zoptymalizować i rozszerzyć możliwości aplikacji.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video JavaScript w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top