Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
393 lines (307 sloc) 12.9 KB

MongoDB Ruby Driver History



  • Added testing and full support for MongoDB 2.1 & 2.2
  • Added Aggregation Framework helper method
  • Added support for Mongos high availability
  • Modified and added new read preferences (details in documentation)
  • Added support for data center awareness (tag_sets)
  • Fixed bug which attempted to close cursors on wrong replica set member



  • Added ability to declare sort ordering via an ordered hash
  • Addresses major compatability issue with mongoid created by v1.6.3



  • Performance measurements and enhancements (especially for C-extensions)
  • Bug fixes for checking strings with non UTF-8 forced or implied encodings
  • Added refresh support for multiple threaded instances of ReplSetConnection
  • Added ability to handle IRB::Abort Exception (ctrl-c) cleanly
  • Added support for large dates on 32-bit platforms (Ruby 1.9+)
  • Added #to_ary method for BSON::ObjectId (Farrel Lifson)
  • Added support for ENV'MONGODB_URI'
  • Various gridio bug fixes (John Bintz)
  • Various logging support improvements
  • Various documentation improvements (tutorials, sorting, links)



  • Implements socket timeouts via non-blocking IO instead of Timeout module which should greatly increase performance in highly threaded applications
  • Added ability to authentication via secondary if primary node unavailable
  • Replica set refresh interval now enforces a lower bound of 60 seconds
  • Added documentation for dropping indexes, collections, databases
  • Test output cleanup (...)s unless failure occurs



  • Added thread affinity to Mongo::Pool
  • Added deploy tasks
  • Added Travis CI support (Cyril Mougel)
  • Logging warning message is only displayed for level :debug



  • Added Gemfile
  • ReplSetConnection seed format is now array of 'host:port' strings
  • Added read preference :secondary_only
  • Added ability to log duration -- enabled by default (Cyril Mougel)
  • Added read_only option for DB#add_user (Ariel Salomon)
  • Added :collect_on_error option for bulk-insert (Masahiro Nakagawa)
  • Added and updated URI options (now case insensitive)
  • Bug fix for ReplSet refresh attempting to close a closed socket
  • Default op_timeout for ReplSetConnection is now disabled (was 30 seconds)
  • Support db output option for map reduce (John Ewart)
  • Support for keeping limited versions of files using GridFS (VvanGemert)



  • Lots of fixes for replica set connection edge cases.
  • Set default op_timeout and connect_timeout to 30 seconds.
  • Support GeoHaystack indexing.



Release due to corrupted gemspec. This was a bug having to do with rubygems. Apparently, gems must still be built with Ruby 1.8.



This releases fixes bugs introduced in 1.4.0 and 1.4.1 that were introduced as a result of adding replica set refresh modes.

  • Removed :async refresh mode.
  • Disabled auto refresh mode by default. If you want the driver to automatically check the state of the replica set, you must use :sync mode. Note that replica set refresh is designed only to account for benign changes to the replica set (adding and removing nodes that don't affect current connections).
  • Fixed bug with commands being sent to secondary nodes. The next release will allow you to specify where commands can be sent.
  • Support :j safe mode option.
  • Fix :max_scan and :show_disk_loc Cursor options.

You can see the remaining issues at



Fix bugs associated with replica set refresh.



If you're using 1.4.0, this is a necessary upgrade.

  • Simplified replica set refresh.
  • Fix bugs associated with replica set refresh.
  • Make cursor smart enough to continue functioning even if a refresh is triggered.



  • Attempt to automatically refresh internal replica set state using ReplSetConnection#refresh.
  • Two automated refresh modes: :async and :sync. Automated refresh can also be disabled.
  • Choose secondary for reads based on ping time.
  • Read preference API: specify whether queries should go to primary or secondary on a per-query basis.
  • Pass :require_primary => false to ReplSetConnection to connect without requiring a primary node.
  • Enable exhaust-mode queries with OP_QUERY_EXHAUST.
  • Collection#count takes a query selector.
  • Support continue_on_error flag for bulk inserts (use :continue_on_error => true)
  • Add Cursor#add_option. Deprecate Cursor#query_opts and replace with Cursor#options.
  • Initial SSL support (connect with :ssl => true)
  • Update to latest Java driver for JRuby.
  • Check max BSON size on a per-connection basis.
  • Fixed two platform-specific BSON serialization issues.
  • Lots of bug fixes and code cleanup.



  • Fix GridIO#gets infinite loop error (Ryan McGeary)
  • Fix BSON::OrderedHash#reject! leaving keys with null values (rpt. by Ben Poweski)
  • Minor semantic fix for OrderedHash#reject!
  • Fix Mongo::DB to allow symbols in method traversing collection names (rpt. by Chris Griego)
  • Support new server regex option "s" (dotall). This is folded in with \m in Ruby.
  • Fix so that Cursor#close hits the right node when :read_secondary is enabled.
  • Support maxScan, showDiskLoc, and returnKey cursor options.
  • Make DB#validate_collection compatible with server v1.9.1.
  • Fix so that GridIO#gets returns local md5 with md5 matches server md5 (Steve Tantra).
  • Fix bug in BSON::OrderedHash that prevents YAML.load (Ian Warshak).
  • Fix example from /examples.
  • Ensure that we do not modify hash arguments by calling Hash#dup when appropriate.
  • Ensure that JRuby deserializer preserves binary subtypes properly.
  • Fix for streaming an empty file into GridFS (Daniël van de Burgt).
  • Minor doc fixes.



  • Add option to set timeouts on socket read calls using the Mongo::Connection :op_timeout option.
  • Add StringIO methods to GridIO objects
  • Support for BSON timestamp type with BSON::Timestamp
  • Change the BSON binary subtype from 2 to 0
  • Remove private method Connection#reset_conection and deprecate public method ReplSetConnection#reset_connection
  • ByteBuffer#== and OrderedHash#dup (Hongli Lai)
  • Better check for UTF8 validity in Ruby 1.9
  • Added previously removed Connection#host and Connection#port
  • Added transformers to allow Mongo::Cursor to allow instantiated objects (John Nunemaker)
  • Automated reconnection on fork
  • Added Cursor#next alias for Cursor#next_document
  • Audit tests after enabling warnings (Wojciech Piekutowski)
  • Various bug fixes thanks to Datanoise, Hongli Lai, and Mauro Pompilio



  • Fix the exception message shown when there's an IOError (Mauro Pompilio)
  • Another update to map-reduce docs for v1.8. Note that if you use the new output option {:out => {:inline => true}}, then you must also specify :raw => true.



  • Update docs for map-reduce command
  • Minor doc fix



  • Improved replica set failover for edge case.
  • Fix for REE on OSX (Hongli Lai)



  • Enable authentication with connection pooling.
  • Allow custom logging with Connection#instrument (CodeMonkeySteve)
  • Minor fixes and doc improvements.



  • Some minor improvements. See commit history.



Lots of cleanup and minor bug fixes.



  • ReplSetConnection class. This must be used for replica set connections from now on. You can still use Connection.multi, but that method has been deprecated.
  • Automated replica set tests. rake test:rs
  • Check that request and response ids match.
  • Several bug fixes. See the commit history for details.



  • Important connection failure fix.
  • ObjectId#to_s optimization (David Cuadrado).



  • Distributed reads for replica set secondaries. See /docs/examples/replica_set.rb and for details.
  • Note: when connecting to a replica set, you must use Connection#multi.
  • Cursor#count takes optional skip and limit
  • Collection#ensure_index for caching index creation calls
  • Collection#update and Collection#remove now return error object when using safe mode
  • Important fix for int/long serialization on bug introduced in 1.0.9
  • Numerous tweaks and bug fixes.



  • Two critical fixes to automated failover and replica sets.
  • Bug passing :timeout to Cursor.
  • Permit safe mode specification on Connection, Collection, and DB levels.
  • Specify replica set name on connect to verify connection to the right set.
  • Misc. reorganization of project and docs.



  • Several critical JRuby bug fixes
  • Fixes for JRuby in 1.9 mode
  • Check keys and move id only when necessary for JRuby encoder



  • Official JRuby support via Java extensons for BSON (beta)
  • Connection#lock! and Connection#unlock! for easy fsync lock
  • Note: BSON::Code is no longer a subclass of String.



  • Significant performance improvements (with a lot of help from Hongli Lai)



  • Cursor#rewind! and more consistent Cursor Enumberable behavior
  • Deprecated ObjectID for ObjectId
  • Numerous minor bug fixes.



  • A few minor test/doc fixes.
  • Better tests for replica sets and replication acknowledgment.
  • Deprecated DB#error and DB#last_status



  • Replica set support.
  • Collection#map_reduce bug fix.



  • Fix for bug introduced in 1.0.4.



  • Removed deprecated
    • Cursor admin option
    • DB#query
    • DB#create_index (use Collection#create_index)
    • DB#command only takes hash options now
  • j2bson executable (neomantra)
  • Fixed bson_ext compilation on Solaris (slyphon)
  • System JS helpers (neovintage)
  • Use one mutex per thread on pooled connections (cremes)
  • Check for CursorNotFound response flag
  • MapReduce can return raw command output using :raw
  • BSON::OrderedHash equality with other Ruby hashes (Ryan Angilly)
  • Fix for broken Socket.send with large payloads (Frédéric De Jaeger)
  • Lots of minor improvements. See commmits.



  • Optimiztion for BSON::OrderedHash
  • Some important fixes.



This is a minor release for fixing an incompatibility with MongoDB v1.5.2

  • Fix for boolean response on commands for core server v1.5.2
  • BSON.read_bson_document and b2json executable (neomantra)
  • BSON::ObjectID() shortcut for BSON::ObjectID.from_string (tmm1)
  • Various bug fixes.



  • set Encoding.default_internal
  • DEPRECATE JavaScript string on Collection#find. You now must specify $where explicitly.
  • Added Grid#exist? and GridFileSystem#exist?
  • Support for replication acknowledgment
  • Support for $slice
  • Namespaced OrderedHash under BSON (sleverbor)


2010-4-29 Note: if upgrading from versions prior to 0.20, be sure to upgrade to 0.20 before upgrading to 1.0.

  • Inspected ObjectID is represented in MongoDB extended json format.
  • Support for tailable cursors.
  • Configurable query response batch size (thx. to Aman Gupta)

  • bson_ext installs on early release of Ruby 1.8.5 (dfitzgibbon)

  • Deprecated DB#create_index. Use Collection#create_index index.
  • Removed deprecated Grid#put syntax; no longer requires a filename.



  • Added bson gem dependency.



If upgrading from a previous version of the Ruby driver, please read these notes carefully, along with the 0.20_UPGRADE doc.

  • Support for new commands:
    • Collection#find_and_modify
    • Collection#stats
    • DB#stats
  • Query :fields options allows for values of 0 to exclude fields (houdini, railsjedi).
  • GridFS
    • Option to delete old versions of GridFileSystem entries.
    • Filename is now optional for Grid#put.
    • Option to write arbitrary attributes to a file: @grid.put(@data, :favorite_phrase => "blimey!")
    • Indexes created on the chunks collection are now unique. If you have an existing chunks collection, you may want to remove
  • Removed the following deprecated items:

    • GridStore class
    • RegexpOfHolding class
    • Paired connections must now be initialized with Connection.paired
  • BSON-related code extracted into two separate gems: bson and bson_ext (thx to Chuck Remes).

    • mongo_ext no longer exists.
    • BSON::Binary constructor can now take a string, which will be packed into an array.
    • Exception class adjustments:
      • Mongo::InvalidObjectID moved to BSON::InvalidObjectID
      • Mongo::InvalidDocument moved to BSON::InvalidDocument
      • Mongo::InvalidStringEncoding moved to BSON::InvalidStringEncoding
      • Mongo::InvalidName replaced by Mongo::InvalidNSName and BSON::InvalidKeyName
    • BSON types are now namespaced under the BSON module. These types include:
      • Binary
      • ObjectID
      • Code
      • DBRef
      • MinKey and MaxKey
    • Extensions compile on Rubinius (Chuck Remes).

Prior to 0.20

See git revisions.

Something went wrong with that request. Please try again.