Реальные сценарии обновления
Управление продуктами в электронной коммерции
Сценарий: динамическое обновление цен и запасов
## Connect to MongoDB
mongosh
## Switch to LabEx e-commerce database
use labex_ecommerce
## Insert sample product
db.products.insertOne({
name: "Machine Learning Course",
price: 99.99,
stock: 50,
discounts: []
})
## Update multiple fields simultaneously
db.products.updateOne(
{ name: "Machine Learning Course" },
{
$set: { price: 79.99 },
$inc: { stock: -10 },
$push: { discounts: "Summer2023" }
}
)
Управление профилями пользователей
Сценарий: инкрементальное отслеживание активности пользователя
## Create user activity collection
db.user_activities.insertOne({
username: "labex_developer",
total_courses: 3,
completed_labs: 25,
skill_tags: ["Python", "MongoDB"]
})
## Update user profile incrementally
db.user_activities.updateOne(
{ username: "labex_developer" },
{
$inc: { total_courses: 1, completed_labs: 5 },
$addToSet: { skill_tags: "Data Science" }
}
)
Сравнение сценариев обновления
Сценарий |
Операторы обновления |
Основные аспекты для рассмотрения |
Управление продуктами |
$set , $inc , $push |
Реальное время отслеживания запасов |
Профиль пользователя |
$inc , $addToSet |
Инкрементальное развитие навыков |
Подписка на услугу |
$currentDate , $max |
Автоматическое управление продлением |
Сложный процесс обновления
graph TD
A[Trigger Event] --> B{Update Type}
B --> |Price Change| C[Update Product Price]
B --> |Stock Adjustment| D[Modify Inventory]
B --> |User Progress| E[Track User Activities]
C,D,E --> F[Validate Update]
F --> G[Apply Changes]
G --> H[Log Transaction]
Продвинутые стратегии обновления
Атомарные обновления нескольких документов
- Используйте транзакции для сложных обновлений
- Реализуйте оптимистическую блокировку
- Гарантируйте согласованность данных между коллекциями
Оптимизация производительности
- Используйте выборочное обновление полей
- Минимизируйте размер документов
- Используйте индексы для более быстрых обновлений
Обработка ошибок и валидация
## Example of update with validation
db.products.updateOne(
{
name: "Advanced MongoDB Course",
price: { $gt: 0 }
},
{
$set: { price: 129.99 },
$currentDate: { last_updated: true }
}
)
Лучшие практики для реальных сценариев обновления
- Всегда валидируйте входные данные
- Используйте подходящие операторы обновления
- Реализуйте комплексную обработку ошибок
- Логируйте важные операции обновления
- Отслеживайте производительность обновлений
Понимая эти реальные сценарии, разработчики могут создать надежные и эффективные стратегии обновления MongoDB, адаптированные к требованиям приложения.