10-modul · 2-dars: Spring Data MongoDB

Daraja: Ilg'or

Spring Data MongoDB. Advanced backend bo‘yicha nazariya, amaliy namuna va mustaqil mashq.

Tushuntirish

## Dars maqsadi Spring Data MongoDB tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.

## Nazariya MongoDB sync driverda MongoClient ulanish pooli va client lifecycle, MongoDatabase database, MongoCollection esa document amallarini ifodalaydi. Clientni har requestda qayta yaratmang; ilova lifecycle davomida boshqarib, yopilishda yoping. Filters va Sorts yordamchilari query tuzishni tushunarli qiladi. Spring Data MongoDB repository, mapping va MongoTemplate bilan driver ustida abstraksiya beradi. @Document collectionni, @Id identifikatorni, @Field saqlanadigan field nomini belgilaydi. @Indexed index niyatini ifodalaydi, ammo avtomatik index yaratish konfiguratsiyasiga ko'r-ko'rona tayanmang: production indekslarini nazoratli chiqaring. MongoTemplate murakkab Query, Criteria, Update va aggregation uchun mos; repository oddiy derived query va paging uchun qulay. Pageable bilan sahifalashda sortni aniq belgilang. Projection faqat kerakli fieldlarni oladi. Domain obyektni API DTOga ajrating; _id mappingi va ObjectId/string aylanishi uchun test yozing. MongoDB persistence context va lazy associationlari JPA bilan bir xil ishlaydi deb hisoblamang.

## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/10-module%28Spring%20Boot%20Part%20%7C%7C%29.md) [Rasmiy qo‘llanma](https://docs.spring.io/spring-boot/reference/)

Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.

Kod misoli

@org.springframework.data.mongodb.core.mapping.Document("notes")
record MongoNote(@org.springframework.data.annotation.Id String id, String title) {}
interface NoteRepo extends org.springframework.data.mongodb.repository.MongoRepository<MongoNote,String> {
  org.springframework.data.domain.Page<MongoNote> findByTitle(
    String title, org.springframework.data.domain.Pageable page);
}

Keng tarqalgan xatolar

Mashqlar

Teglar: pdp, nazariya, modul-10

Interaktiv ko'rinish (viktorina, izohlar, tarix)