Embedded Documents (Embedded Documents)
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" })
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.