Podstawowe Operacje CRUD przy użyciu Mongoose

Mongoose jest potężną biblioteką Node.js, która upraszcza interakcje z MongoDB. Działa na zasadzie Model-Schemat, co pozwala na zarządzanie strukturą danych i operacjami na nich w sposób wygodny i zorganizowany. Dziś omówimy podstawowe operacje CRUD (Create, Read, Update, Delete) w Mongoose, które są fundamentem pracy z bazami danych.

Przed rozpoczęciem, upewnij się, że masz połączenie z bazą danych MongoDB za pomocą Mongoose (jeśli nie, możesz zapoznać się z artykułem „Wprowadzenie do Mongoose”).

W poniższych przykładach załóżmy, że mamy już zdefiniowany model User dla kolekcji users na podstawie schematu userSchema:

				
					const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
  name: { type: String, required: true },
  email: { type: String, required: true, unique: true },
  age: { type: Number, min: 18 }
});

const User = mongoose.model('User', userSchema);

				
			

1. Create – Tworzenie nowych dokumentów

Aby dodać nowy dokument do kolekcji MongoDB, możemy skorzystać z metody .save() na nowej instancji modelu lub bezpośrednio z metody .create(), która jest bardziej zwięzła.

Przykład tworzenia nowego użytkownika:

				
					const newUser = new User({
  name: 'Jan Kowalski',
  email: 'jan@example.com',
  age: 25
});

newUser.save()
  .then(() => console.log('Użytkownik zapisany'))
  .catch(error => console.log('Błąd zapisu:', error));

				
			

Alternatywnie, możemy użyć metody .create():

				
					User.create({
  name: 'Anna Nowak',
  email: 'anna@example.com',
  age: 30
})
.then(user => console.log('Dodano użytkownika:', user))
.catch(error => console.log('Błąd zapisu:', error));

				
			

2. Read – Wyszukiwanie dokumentów

Wyszukiwanie dokumentów w kolekcji jest łatwe dzięki metodom .find() i .findOne().

  • .find() – znajduje wszystkie dokumenty spełniające podane kryteria.
  • .findOne() – znajduje pierwszy dokument, który spełnia podane kryteria.

Przykład wyszukiwania wszystkich użytkowników w bazie:

				
					User.find()
  .then(users => console.log('Użytkownicy:', users))
  .catch(error => console.log('Błąd wyszukiwania:', error));

				
			

Przykład wyszukiwania użytkownika po adresie e-mail:

				
					User.findOne({ email: 'jan@example.com' })
  .then(user => {
    if (user) {
      console.log('Znaleziono użytkownika:', user);
    } else {
      console.log('Użytkownik nie istnieje');
    }
  })
  .catch(error => console.log('Błąd wyszukiwania:', error));

				
			

3. Update – Aktualizowanie dokumentów

Aktualizacja dokumentów w Mongoose może być przeprowadzona za pomocą metod .updateOne() lub .findByIdAndUpdate().

  • .updateOne() – aktualizuje pierwszy znaleziony dokument, który pasuje do podanych kryteriów.
  • .findByIdAndUpdate() – znajduje dokument po identyfikatorze i go aktualizuje.

Przykład aktualizacji wieku użytkownika na podstawie adresu e-mail:

				
					User.updateOne({ email: 'jan@example.com' }, { age: 26 })
  .then(result => console.log('Wynik aktualizacji:', result))
  .catch(error => console.log('Błąd aktualizacji:', error));

				
			

Przykład aktualizacji użytkownika za pomocą metody .findByIdAndUpdate():

				
					User.findByIdAndUpdate('userId', { age: 28 }, { new: true })
  .then(updatedUser => console.log('Zaktualizowany użytkownik:', updatedUser))
  .catch(error => console.log('Błąd aktualizacji:', error));

				
			

W powyższym przykładzie userId to identyfikator dokumentu, który chcemy zaktualizować. Opcja { new: true } sprawia, że metoda zwraca zaktualizowany dokument zamiast starego.

4. Delete – Usuwanie dokumentów

Mongoose oferuje kilka sposobów na usuwanie dokumentów: .deleteOne() i .findByIdAndDelete().

  • .deleteOne() – usuwa pierwszy dokument, który pasuje do podanych kryteriów.
  • .findByIdAndDelete() – znajduje dokument po identyfikatorze i go usuwa.

Przykład usunięcia użytkownika po adresie e-mail:

				
					User.deleteOne({ email: 'jan@example.com' })
  .then(result => console.log('Wynik usunięcia:', result))
  .catch(error => console.log('Błąd usuwania:', error));

				
			

Przykład usunięcia użytkownika za pomocą metody .findByIdAndDelete():

				
					User.findByIdAndDelete('userId')
  .then(deletedUser => {
    if (deletedUser) {
      console.log('Usunięto użytkownika:', deletedUser);
    } else {
      console.log('Użytkownik nie istnieje');
    }
  })
  .catch(error => console.log('Błąd usuwania:', error));

				
			

Podsumowanie

Operacje CRUD (Create, Read, Update, Delete) są podstawą pracy z bazami danych, a Mongoose zapewnia wygodne metody do ich wykonania:

  • Create – Tworzenie nowych dokumentów za pomocą .save() lub .create().
  • Read – Wyszukiwanie dokumentów za pomocą .find() i .findOne().
  • Update – Aktualizowanie dokumentów za pomocą .updateOne() i .findByIdAndUpdate().
  • Delete – Usuwanie dokumentów za pomocą .deleteOne() i .findByIdAndDelete().

Poznanie tych operacji pozwala efektywnie zarządzać danymi w MongoDB. Powyższe przykłady stanowią dobry punkt wyjścia do tworzenia i zarządzania aplikacjami z bazą danych MongoDB przy użyciu Mongoose.