Stable Release in branch 2.3
2.3.2
Released 10 Jan 2013
(13 years ago)
SoftwareMongoDB Server
Version2.3
Initial release2.3.0
22 Oct 2012
(13 years ago)
Latest release2.3.2
10 Jan 2013
(13 years ago)
End of lifeUnavailable
Release noteshttps://www.mongodb.com/docs/manual/release-notes/2.3/
Documentationhttps://www.mongodb.com/docs/v2.3/
Downloadhttps://www.mongodb.com/try/download/community
MongoDB Server 2.3 ReleasesView full list

What Is New in MongoDB 2.3

MongoDB 2.3 delivers a significant performance boost and introduces powerful new aggregation capabilities. This release is all about making your database operations faster and your data analysis more flexible.

Category Key Changes
New Features Aggregation Framework, TTL Collection Support
Performance Concurrency Improvements, Faster Counts
Indexing Sparse & Covered Index Enhancements
Geospatial GeoJSON Support, New Query Operators

How does the new Aggregation Framework work?

The Aggregation Framework is a new way to process and transform documents in a collection. It uses a pipeline concept where you chain together operations like $match, $group, and $sort.

This is a game-changer for analytics because it's done natively in the database, which is much faster than using MapReduce for many tasks. You can build complex data processing flows without writing JavaScript functions.

Example Pipeline

db.orders.aggregate([
  { $match: { status: "A" } },
  { $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
  { $sort: { total: -1 } }
])

What performance improvements should I expect?

You'll see the biggest gains in concurrency and count operations. The global read/write lock now yields more aggressively, which means better multi-threaded performance under heavy load.

Counting documents is also significantly faster, especially on large collections. This matters because db.collection.count() is used everywhere, from pagination to dashboard metrics.

Are there any new indexing features?

Yes, sparse and covered indexes got major upgrades. The database can now use a sparse index for sorting even when the query doesn't explicitly use the index, which can avoid slow in-memory sorts.

Covered index queries are more powerful too. The optimizer is better at identifying when a query can be answered entirely using an index, which means less disk I/O and faster results.

What about geospatial queries?

Geospatial support got a huge upgrade with the introduction of GeoJSON. You can now store and query more complex shapes like polygons and lines, not just points.

New operators like $geoWithin and $geoIntersects provide more flexible ways to find location-based data. This opens up entirely new use cases for mapping and GIS applications.

FAQ

Should I replace all my MapReduce jobs with the Aggregation Framework?
For most analytical queries, yes. The Aggregation Framework is simpler and often faster. However, for extremely complex data processing that requires custom JavaScript logic, MapReduce might still be necessary.

Do TTL collections work with replicated sets?
Yes, TTL collections are fully supported in replica sets. The background thread that removes expired documents runs on the primary, and the deletions are replicated to secondaries like any other write operation.

Will the concurrency improvements help with my single-threaded application?
Indirectly, yes. Even if your app is single-threaded, the database handles concurrent connections from multiple application instances. The improved lock yielding means your database can handle more concurrent operations without blocking.

How do I start using GeoJSON data?
You need to store your location data in the GeoJSON format instead of the legacy coordinate pairs. Then you can use the new geospatial query operators like $geoWithin to query against these shapes.

Is there a migration path for existing geospatial data?
You'll need to convert your existing coordinate pairs to GeoJSON Point objects. This typically involves a migration script that reads each document and rewrites the location field to the new format.

Releases In Branch 2.3

VersionRelease date
2.3.210 Jan 2013
(13 years ago)
2.3.125 Nov 2012
(13 years ago)
2.3.022 Oct 2012
(13 years ago)