Реализация временных меток (timestamps) для документов
Стратегии реализации временных меток
1. Временные метки в схеме Mongoose
const mongoose = require("mongoose");
const UserSchema = new mongoose.Schema(
{
username: String,
email: String
},
{
timestamps: true // Automatically adds createdAt and updatedAt
}
);
2. Ручное создание временных меток
graph LR
A[Document Creation] --> B[Manual Timestamp Assignment]
B --> C[Set Current Timestamp]
B --> D[Custom Timestamp Logic]
Пример реализации
const createUserWithTimestamp = (userData) => {
const timestamp = new Date();
return {
...userData,
createdAt: timestamp,
updatedAt: timestamp
};
};
Параметры настройки временных меток
| Параметр |
Описание |
Использование |
timestamps: true |
Стандартная временная метка MongoDB |
Автоматическое отслеживание |
| Пользовательские поля временных меток |
Гибкое именование |
Расширенное отслеживание |
| Вложенные объекты временных меток |
Сложные модели данных |
Подробное логирование |
Продвинутые техники работы с временными метками
Обработка часовых поясов
const createTimestampWithTimezone = () => {
return {
timestamp: new Date(),
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
};
};
Временные метки с высокой точностью
const highPrecisionTimestamp = {
timestamp: Date.now(),
microseconds: process.hrtime.bigint()
};
Настройка MongoDB на Ubuntu 22.04
## Install MongoDB
sudo apt-get update
sudo apt-get install -y mongodb
## Start MongoDB service
sudo systemctl start mongodb
## Install Mongoose
npm install mongoose
Практический пример реализации
const mongoose = require("mongoose");
// Define schema with custom timestamp configuration
const ProductSchema = new mongoose.Schema({
name: String,
price: Number,
createdTimestamp: {
type: Date,
default: Date.now
},
lastUpdated: {
type: Date,
default: Date.now
}
});
// Create model
const Product = mongoose.model("Product", ProductSchema);
// Create a new product with automatic timestamps
const newProduct = new Product({
name: "LabEx Special Edition",
price: 99.99
});
// Save product with automatic timestamp tracking
newProduct.save();
Лучшие практики
- Используйте последовательные стратегии для временных меток
- Учитывайте влияние на производительность
- Реализуйте временные метки, учитывающие часовой пояс
- Используйте методы оптимизации MongoDB от LabEx
Освоив реализацию временных меток для документов, разработчики могут создать более надежные и отслеживаемые решения для баз данных.