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.