MongoDB Academy · Ders

Gömme: Bire- Az İlişkileri

Öğrenenler, sıkı biçimde ilişkili veriler için alt belgeleri gömecek ve ilgili bilgileri aynı konumda tutmanın okuma performansı avantajını ölçecektir.

1. ders / 413 adım

Gömme: Bire- Az İlişkileri, CoddyKit'te ücretsiz bir MongoDB Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, MongoDB Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. MongoDB Academy kursu toplamda 4 dersten oluşur.

Belge Gömme Nedir?

Gömme, ilişkili verileri ayrı bir koleksiyonda tutmak yerine doğrudan bir üst belgenin içinde saklamak anlamına gelir. İki koleksiyonu yabancı anahtarla bağlamak yerine, ilişkili verileri bir alt belge veya alt belge dizisi olarak iç içe yerleştirirsiniz. Bu, MongoDB'nin en güçlü tasarım araçlarından biridir; çünkü tek bir okuma ile üst belgeyi ve ilişkili tüm verilerini aynı anda almanızı sağlar.

Bire Birkaç İlişkisi

Bire birkaç ilişkisi, bir üst belgenin az sayıda ve sınırlandırılmış alt öğeye sahip olması durumunda oluşur; bu sayı genellikle birkaç düzineden azdır. Klasik örnekler arasında bir blog gönderisi ve yorumları, bir kullanıcı ve adresleri veya bir sipariş ve satır öğeleri bulunur. Alt öğe sayısı öngörülebilir ve az olduğunda gömme neredeyse her zaman doğru seçimdir.

Kullanıcının Adreslerini Gömme

Her kullanıcının bir veya iki teslimat adresine sahip olduğu bir users koleksiyonunu ele alalım. Ayrı bir addresses koleksiyonu kullanmak yerine adresleri doğrudan gömün. Böylece bir kullanıcıyı ve adreslerini bulmak için birleştirme işlemi olmadan tek bir sorgu yeterli olur.

db.users.insertOne({
  name: 'Alice',
  email: 'alice@example.com',
  addresses: [
    { label: 'home', street: '123 Maple St', city: 'Austin', zip: '78701' },
    { label: 'work', street: '456 Oak Ave', city: 'Austin', zip: '78702' }
  ]
});

Gömülü Verileri Tek Sorguda Okuma

Veriler gömüldüğünde, üst belgeyi ve tüm alt belgelerini tek bir findOne ile alırsınız. $lookup kullanmanıza veya veritabanına ikinci kez gidip gelmenize gerek kalmaz. Böylece okumalar daha hızlı olur ve uygulama kodu sadeleşir; çünkü nesne grafiğinin tamamı tek bir yanıtta gelir.

// Retrieve user AND their addresses in a single read
const user = await db.collection('users').findOne(
  { email: 'alice@example.com' },
  { projection: { name: 1, addresses: 1 } }
);
console.log(user.addresses); // Array of embedded address objects

Gömülü Alt Belgeyi Güncelleme

Gömülü bir alt belgeyi güncellemek için konumsal işleci $ veya nokta gösterimini kullanın. Örneğin Alice'in ev adresinin posta kodunu değiştirmek, filtre koşuluyla eşleşen belirli dizi öğesini hedefler. Gömülü güncellemeler belge düzeyinde atomik olarak gerçekleşir; işlem gerekmez.

db.users.updateOne(
  { email: 'alice@example.com', 'addresses.label': 'home' },
  { $set: { 'addresses.$.zip': '78703' } }
);

Okuma Performansı Avantajı

MongoDB, belgeleri diskte bitişik BSON blokları olarak saklar. İlişkili verileri gömdüğünüzde, altyapı iki ayrı koleksiyon taraması yerine tek bir depolama bloğunu okur. İlişkili verilerin birlikte konumlandırılması, üst belgeye ve alt belgelere neredeyse her zaman birlikte erişilen, okuma ağırlıklı iş yüklerinde gömülü belgelerin referans kullanımından daha iyi performans göstermesinin temel nedenidir.

Mongoose'da Gömme

Mongoose'da alt belge şemalarını tanımlar ve bunları üst şemanın içine yerleştirirsiniz. Mongoose, gömülü dizileri alt belge dizileri olarak ele alır ve her öğe için tam tür doğrulaması ile yaşam döngüsü kancaları sağlar. Üst model, ağacın tamamını atomik olarak kaydeder.

const addressSchema = new mongoose.Schema({
  label: String,
  street: String,
  city: String,
  zip: String
});

const userSchema = new mongoose.Schema({
  name: String,
  email: String,
  addresses: [addressSchema]  // embedded array of sub-documents
});

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

Gömmenin En Uygun Olduğu Durumlar

Gömme şu durumlarda en iyi sonucu verir: (1) alt verilere her zaman üst belgeyle birlikte erişilmesi; (2) alt belge sayısının az ve sınırlandırılmış olması; (3) alt belgelerin kendilerine ait bağımsız bir yaşam döngüsüne ihtiyaç duymaması (örneğin hiçbir zaman tek başına sorgulanmaması veya güncellenmemesi). Bu üç koşulun tümü doğruysa gömme neredeyse kesinlikle en uygun seçimdir.

Belge Boyutu Sınırı

Her MongoDB belgesinin kesin boyut sınırı 16 MB'tır. Bire birkaç ilişkilerinde bu nadiren sorun oluşturur; on adresi olan bir kullanıcı veya yirmi satır öğesi olan bir sipariş sınırın oldukça altındadır. Ancak gömmenin belgeleri sınıra yaklaştırmadığından emin olmak için belge büyümesini zaman içinde izlemelisiniz.

Gömme ve Referans Kullanımına Genel Bakış

Seçiminize yön vermek için şu kısa karşılaştırmayı kullanın:

  • Gömme: tek sorgu, atomik güncellemeler, az ve sınırlandırılmış alt belge sayısı
  • Referans kullanma: esnek alt belge sayısı, paylaşılan alt belgeler, bağımsız alt belge sorguları

Bire birkaç ilişkilerinde gömme neredeyse her ölçütte üstün gelir. Ek ağ gidiş gelişlerini önler ve şemanızı basit tutarsınız.

Uygulamalı Örnek: Blog Gönderisi Etiketleri

Bir blog gönderisinde genellikle az sayıda ve sabit bir etiket kümesi bulunur. Referanslar içeren ayrı bir tags koleksiyonu tutmak yerine etiketleri doğrudan gönderi belgesine dizelerden oluşan bir dizi olarak gömün. Etiketlere göre gönderi sorgulamak, tags alanındaki çok anahtarlı bir dizinle verimli olur ve bir gönderiyi okuduğunuzda etiketleri her zaman aynı belge içinde alırsınız.

db.posts.insertOne({
  title: 'Getting Started with MongoDB',
  body: 'MongoDB is a document database...',
  tags: ['mongodb', 'nosql', 'database'],
  author: 'Alice',
  createdAt: new Date()
});

// Index the tags array for fast tag-based lookups
db.posts.createIndex({ tags: 1 });

Kısa Kontrol

Bu dersteki MongoDB ve NoSQL Veritabanları kavramlarını anlayıp anlamadığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: gömme, ilişkili verileri üst belgenin içine yerleştirir; bire birkaç ilişkileri, tek bir okumayla tüm verileri getirdiği için gömmeden yararlanır; ayrıca Mongoose, tür güvenli gömülü diziler için alt belge şemalarını destekler. Sırada referans kullanmayı inceleyeceğiz: belgeleri iç içe yerleştirmek yerine koleksiyonlar arasında ne zaman bağlamak gerekir?

Başlamak ücretsiz

Yapay zeka eğitmeniyle JavaScript öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
30
Dersler
120

Sıkça Sorulan Sorular

“Gömme: Bire- Az İlişkileri” dersi ücretsiz mi?

Evet — “Gömme: Bire- Az İlişkileri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve MongoDB Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. MongoDB Academy kursu toplamda 4 dersten oluşur.

“Gömme: Bire- Az İlişkileri” dersinde ne öğreneceğim?

Öğrenenler, sıkı biçimde ilişkili veriler için alt belgeleri gömecek ve ilgili bilgileri aynı konumda tutmanın okuma performansı avantajını ölçecektir. MongoDB Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

MongoDB Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te MongoDB Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Gömme: Bire- Az İlişkileri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu MongoDB Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her MongoDB Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Gömme: Bire- Az İlişkileri
  2. Başvuru Verme: Bire-Çok ve Çoka-Çok
  3. Sınırsız Dizi Karşıt Kalıbı
  4. Şema Tasarımı Karar Çerçevesi
← MongoDB Academy Sayfasına Dön