دوره‌ها / MongoDB / Embedded Documents (Embedded Documents)

Embedded Documents (Embedded Documents)

15 دقیقه Article

Embedded Documents: سندهای تو در تو 📦

در MongoDB، می‌توانید documents را درون documents دیگر قرار دهید. این به شما امکان می‌دهد داده‌های مرتبط را در یک document نگه دارید.

چرا Embedded Documents؟

Embedded Documents برای داده‌هایی که:

  • همیشه با parent document استفاده می‌شوند
  • نیاز به query جداگانه ندارند
  • تعداد محدودی دارند (نه هزاران)

مثال عملی:

// User با address embedded
db.users.insertOne({
  name: "Ali",
  email: "ali@example.com",
  address: {
    street: "123 Main St",
    city: "Tehran",
    country: "Iran",
    zipcode: "12345"
  }
})

// Product با specifications embedded
db.products.insertOne({
  name: "Laptop",
  price: 999.99,
  specifications: {
    brand: "Dell",
    model: "XPS 15",
    processor: "Intel i7",
    ram: 16,
    storage: 512
  }
})

// Order با multiple embedded documents
db.orders.insertOne({
  orderNumber: "ORD001",
  customer: {
    name: "Sara",
    email: "sara@example.com"
  },
  shipping: {
    address: "456 Oak Ave",
    city: "Tehran",
    method: "express"
  },
  items: [
    { product: "Laptop", quantity: 1, price: 999.99 },
    { product: "Mouse", quantity: 2, price: 29.99 }
  ]
})

Query کردن Embedded Documents:

// پیدا کردن users در شهر Tehran
db.users.find({ "address.city": "Tehran" })

// پیدا کردن products با RAM بیشتر از 8
db.products.find({ "specifications.ram": {{ $gt: 8 }} })

// استفاده از dot notation برای دسترسی به nested fields
db.orders.find({ "customer.name": "Sara" })
💡 نکته: Embedded Documents برای داده‌های "one-to-few" عالی هستند. اگر داده‌های زیادی دارید که نیاز به query جداگانه دارند، بهتر است از Referenced Documents استفاده کنید.
✅ یاد گرفتید: Embedded Documents برای ذخیره داده‌های مرتبط در یک document عالی هستند و query ها را ساده‌تر می‌کنند!

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

تمرین: Embedded Documents Easy
سوال تمرین

🎯 تمرین: ساخت Embedded Document

یک document با embedded address بسازید.

پاسخ تمرین
JAVASCRIPT
db.users.insertOne({
    name: "Ali",
    email: "ali@example.com",
    address: {
        street: "123 Main St",
        city: "Tehran",
        zipCode: "12345"
    }
})

// Query
db.users.find({ "address.city": "Tehran" })

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.