Working with Date and Time Data in MongoDB

Learn how to store, query, and manipulate date and time data in MongoDB, including common use cases and best practices.


Prerequisites

Before you begin, make sure you have the following prerequisites:

  • MongoDB installed and running locally or accessible through a connection string.
  • A MongoDB collection with date and time data.

Storing Date and Time Data

MongoDB provides several data types to store date and time information, including Date and ISODate. You can store timestamps, dates, and times using these data types.

// Storing a date using Date
db.events.insert({ eventDate: new Date("2023-10-20") });
// Storing a date and time using ISODate
db.log.insert({ logTime: new ISODate("2023-10-20T14:30:00Z") });

Querying Date and Time Data

You can query date and time data using various operators, such as $eq (equals), $lt (less than), $gte (greater than or equal to), and $and (logical AND).

// Find events after a specific date
db.events.find({ eventDate: { $gte: new Date("2023-10-20") } });
// Find log entries between two timestamps
db.log.find({
logTime: {
$gte: new ISODate("2023-10-20T14:00:00Z"),
$lt: new ISODate("2023-10-20T15:00:00Z")
}
});

Aggregating Date and Time Data

The Aggregation Framework can be used to perform complex operations with date and time data, such as grouping by date or calculating time intervals.

// Group log entries by date
db.log.aggregate([
{
$group: {
_id: { $dateToString: { format: "%Y-%m-%d", date: "$logTime" } },
count: { $sum: 1 }
}
}
]);

Best Practices

Best practices for working with date and time data in MongoDB include using ISO 8601 format, storing timestamps in UTC, and indexing date fields for improved query performance.


Conclusion

You've learned the basics of working with date and time data in MongoDB. This guide covers storing, querying, and aggregating date and time data, as well as best practices. With these foundational skills, you can effectively handle date and time-related tasks in your MongoDB projects.