Asosiy kontentga o‘tish
Innovialabs

MongoDB nima va undan qachon foydalanish kerak

Asoslar3 daq

Qisqacha

MongoDB — ma’lumotlarni kolleksiyalarda qat’iy sxemasiz JSONga o‘xshash hujjatlar sifatida saqlaydigan hujjatli NoSQL baza. U moslashuvchan va ichma-ich joylashgan ma’lumotlar uchun qulay, bog‘langan moliyaviy va hisob ma’lumotlari uchun esa odatda relyatsion baza ishonchliroq.

MongoDB haqida qisqacha

MongoDB — mashhur hujjatli ma’lumotlar bazasi. Qatorli jadvallar o‘rniga u hujjatlarni — ichki maydonlar va massivlarga ega JSONga o‘xshash obyektlarni saqlaydi. Bu eng taniqli NoSQL tizimlardan biri.

Asosiy g‘oya: ilova birga ishlatadigan ma’lumotlar birga saqlanadi. Barcha xususiyatlari, variantlari va rasmlari bilan mahsulot kartochkasi beshta bog‘langan jadval emas, bitta hujjat bo‘lishi mumkin.

Hujjatlar, kolleksiyalar va BSON

Relyatsion baza bilan o‘xshatish:

Relyatsion bazaMongoDB
Ma’lumotlar bazasiMa’lumotlar bazasi
JadvalKolleksiya
QatorHujjat
UstunMaydon
Birlamchi kalit_id maydoni

Hujjat namunasi:

{
  "_id": "665f1c2a9b1e8a3f4c2d1a10",
  "name": "Shahar ryukzagi",
  "price": 350000,
  "tags": ["sumkalar", "shahar"],
  "specs": { "volume": 20, "color": "qora" }
}
  • Kolleksiya — hujjatlar guruhi, masalan products. Undagi hujjatlar bir xil maydonlar to‘plamiga ega bo‘lishi shart emas.
  • _id — noyob identifikator. Agar uni ko‘rsatmasangiz, MongoDB o‘zi yaratadi (ObjectId turida).
  • BSON (Binary JSON) — MongoDB hujjatlarni diskda saqlaydigan ikkilik format. U matnli JSONga qaraganda tezroq tahlil qilinadi va qo‘shimcha turlarni qo‘llab-quvvatlaydi: sanalar, ObjectId, aniq o‘nli sonlar Decimal128, ikkilik ma’lumotlar.

Asosiy CRUD amallari

mongosh qobig‘i uchun misollar. Node.js, Python va boshqa tillar drayverlarida metodlar xuddi shunday yoki juda o‘xshash nomlanadi.

// Create — hujjat qo‘shish
db.products.insertOne({ name: "Termokrujka", price: 120000, tags: ["idishlar"] })

// Read — hujjatlarni topish
db.products.find({ price: { $lt: 200000 } })
db.products.findOne({ name: "Termokrujka" })

// Update — maydonni o‘zgartirish
db.products.updateOne(
  { name: "Termokrujka" },
  { $set: { price: 110000 } }
)

// Delete — hujjatni o‘chirish
db.products.deleteOne({ name: "Termokrujka" })

E’tibor bering: so‘rov shartlari ham hujjat shaklida yoziladi. $lt — «kichik», $set — «maydon qiymatini o‘rnatish» degani. $set kabi operatorlar orqali alohida maydonlarni o‘zgartiradigan updateOne bilan hujjatni butunlay almashtiradigan replaceOneni adashtirmang — bu yangi boshlovchilarning keng tarqalgan xatosi.

MongoDBda indekslar SQLdagi kabi muhim: db.products.createIndex({ price: 1 }) narx bo‘yicha qidiruvni tezlashtiradi.

MongoDB qachon yaxshi mos keladi

  • Turli-tuman ma’lumotlar. Kiyim, texnika va mebelning xususiyatlari butunlay farq qiladigan katalog.
  • Butunligicha o‘qiladigan ichki tuzilmalar: sozlamalari bilan foydalanuvchi profili, kontent bloklaridan iborat maqola.
  • Tezkor prototiplash, ma’lumotlar tuzilmasi hali o‘zgarib turganda.
  • Hodisalar, loglar, qurilmalardan keladigan ma’lumotlar — yozuvlar ko‘p, bog‘lanishlar kam.
  • Gorizontal masshtablash — shardlash orqali, agar hajmlar haqiqatan ham katta bo‘lsa.

Qachon relyatsion baza ishonchliroq

  • Obyektlar o‘rtasida bog‘lanishlar ko‘p. Mijozlar, buyurtmalar, mahsulotlar, omborlar, to‘lovlar doimo bir-biriga havola qiladi. MongoDBda kolleksiyalarni birlashtirish uchun $lookup bor, lekin bu yerda JOINli SQL tabiiyroq.
  • Pul va hisob. MongoDB ko‘p hujjatli tranzaksiyalarni qo‘llab-quvvatlaydi, ammo relyatsion bazalarda tranzaksiyalar va yaxlitlik cheklovlari modelning asosi va kutilmagan muammolar kamroq.
  • Ko‘p jadvallar bo‘yicha guruhlashli murakkab hisobotlar.
  • Qat’iy ma’lumot qoidalari. MongoDBda sxema validatsiyasini yoqish mumkin, lekin standart holatda baza deyarli har qanday hujjatni qabul qiladi.

Keng tarqalgan xatolar

  • Sxema kerak emas deb hisoblash. U baribir bor — faqat endi uni kod qo‘llab-quvvatlaydi. Validatsiyani yoqing.
  • Relyatsion modelni ko‘chirish: o‘nlab kolleksiyalar va doimiy $lookuplar.
  • Hujjat ichida cheksiz o‘sadigan massivlar, masalan postga yozilgan barcha izohlar. Hujjat hajmi cheklangan, shuning uchun bunday ma’lumotlarni alohida kolleksiyaga chiqargan ma’qul.
  • Indekslar va zaxira nusxalarni unutish.

Ko‘p beriladigan savollar

O‘zingiz o‘rnatishingiz mumkin bo‘lgan bepul Community versiyasi, shuningdek bepul boshlang‘ich darajasi va pullik tariflari bor MongoDB Atlas bulut xizmati mavjud. Litsenziya va tarif shartlarini rasmiy hujjatlarda tekshirgan ma’qul.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.