Changes for version v0.999.999.5 - 2015-08-13 (TRIAL RELEASE)

  • !!! Incompatible Changes !!!
    • The legacy read preference constants in MongoDB::MongoClient have been removed, as they are no longer are used with the new MongoDB::ReadPreference class.
  • Additions
    • PERL-554 Implements 'server_selection_try_once' configuration option on MongoDB::MongoClient.
  • Bug fixes
    • PERL-556 Fixes serialization of thread-shared variables.
    • Fixes topology status string output.
    • Fixes a bug in idle socket check.
  • Changes
    • Changes default connect_timeout_ms to 10,000.
    • Aborts Makefile.PL on Windows before Vista/2008 for better error message than subsequent compilation/test failures.
    • MongoDB::QueryResult attributes have become private, as they are an implementation detail and not intended for end-users to inspect.
    • Loads Authen::SCRAM::Client only on demand, as its Unicode module dependencies are costly when not needed.
  • Testing
    • Reduced number of threads used in threads testing to avoid out of memory errors on memory constrained systems.
  • Prerequisites
    • Removes Moose, Syntax::Keyword::Junction and Throwable.
  • Documentation
    • Adds additional details in MongoDB::Upgrading.
    • Corrects errors in MongoDB::Cursor documentation.
    • Fixes formatting and minor typos in MongoDB::Error.
  • ~ Internal changes ~
    • Changes all Moose classes to Moo classes for speed and to minimize the deep dependency tree.
    • Implements a 5 second "cooldown" period after a network error during topology scanning during which new connection attempts will not be made. This avoids excessive blocking in the driver when it's unlikely that the server will be available right away.
    • Inlines and adapts the Throwable CPAN module to avoid deep dependencies.
    • Consolidates additional constants to MongoDB::_Constants.
    • Exports only type constraints being used to avoid excessive symbol importing and removal (via namespace::clean).

Changes for version v0.999.999.4 - 2015-07-31 (TRIAL RELEASE)

  • Additions
    • Adds support for correctly encoding boolean objects from JSON::XS, Cpanel::JSON::XS, JSON::PP, JSON::Tiny and Mojo::JSON.
    • Adds 'reconnect' method to MongoClient to handle reconnection after a fork or thread spawn.
  • Bug fixes
    • Fixes broken authentication due to the BSON encoder not being initialized or passed correctly.
    • Fixes incorrect configuration test for GCC atomic operations.
    • Fixes incorrect default value for local_threshold_ms (was 15,000, is now 15).
    • Correctly closes sockets on any network error, avoiding undefined behavior that could result from re-use.
    • Stops encoding scalar-ref objects as BSON BINARY type. (Throws an error instead about an unhandled type.)
    • Raises an error if an array-reference document contains duplicate keys.
  • Changes
    • PERL-523 Requires a replica set name explicitly to connect to a replica set. Connecting to a single host is always in a 'direct' mode otherwise.
    • Changes 'max_time_ms' MongoClient attribute default to zero for better backwards server compatibility.
    • Returns MongoDB::UnacknowledgedResult from unacknowledged writes (i.e. { w => 0 } write concern) instead of the corresponding result object (i.e. MongoDB::InsertResult for inserts).
  • Removals
    • Removes the 'connect_type' attribute on MongoClient.
    • Removes automatic fork/thread-spawn detection for speed. Use of 'reconnect" is recommended instead.
    • Removes network error warnings during server topology scanning.
  • Prerequisites
    • Adds Class::XSAccessor, Moo and Type::Tiny::XS.
    • Moves DateTime::Tiny from test_requires to test_recommends.
    • Updates Authen::SCRAM::Client prereq to 0.003.
    • Requires IO::Socket 1.31 on Windows
    • Removes unused Test::Warn.
  • ~ Internal changes ~
    • Changes all Moose classes to be immutable.
    • Optimizes networking code paths substantially.
    • Changes argument handling for CRUD API methods to stop coercing inputs to Tie::IxHash. This makes them significantly faster.
    • Changes most private/internal classes to the Moo framework for greater speed.
    • Changes use of 'strerror_s' to 'streeror' to attempt to get C/XS linking on Windows XP.
    • Disables many internal class type constraints and runtime assertions unless the PERL_MONGO_WITH_ASSERTS environment variable is true.

Changes for version v0.999.999.3 - 2015-06-29 (TRIAL RELEASE)

  • !!! Incompatible Changes !!!
    • PERL-546 MongoDB::DBRef objects no longer have a 'fetch' method or 'client' attribute. This is consistent with the design of the MongoDB drivers for other language. For the Perl driver, specifically, it decouples the BSON model from the MongoClient model, eliminates a circular reference, and avoid Perl memory bugs using weak references under threads.
  • Changes
    • PERL-527 A database name is now optional for MongoDB::DBRef, which is consistent with the DBRef specification.
    • PERL-550 DBRefs allow extra fields (for compatibility); this is not recommended for new DBRefs.
    • BSON code derived from libbson has been updated to libbson 1.1.7
  • Bug fixes
    • Use of -Wall compiler flag during smoke testing has been restricted to gcc compilers, only.
    • Fixed bug in MongoDB::MongoClient::database_names error handling

Changes for version v0.999.999.2 - 2015-06-17 (TRIAL RELEASE)

  • Changes
    • Configuration options representing times have stricter validation such that options that should be non-negative will raise exceptions when given negative numbers.
  • Bug fixes
    • Fixes failing BSON element tests on 32-bit perls.
    • Uses monotonic clock for restarting interrupted select() calls, if available via Time::HiRes.
    • Restores v0 behavior of negative connect_timeout_ms and socket_timeout_ms meaning "never timeout".
    • Restores v0 behavior of setting TCP_NODELAY and SO_KEEPALIVE on sockets.
  • Testing
    • Skips t/max_tims_ms.t unless $ENV{FAILPOINT_TESTING} is true.

Changes for version v0.999.999.1 - 2015-06-10 (TRIAL RELEASE)

  • !!! Incompatible Changes !!!
    • PERL-442 Connection string options revised to match MongoClient options; connection string options always take precedence
    • PERL-470 MongoDB::Cursor globals "slave_ok" and "timeout" no longer have any effect and have been removed.
    • PERL-471 MongoDB::Cursor 'snapshot' method now requires a boolean argument.
  • *** Deprecations ***
    • PERL-398 Old 'timeout' and 'query_timeout' options deprecated in favor of new, more explicit 'connect_timeout_ms' and 'socket_timeout_ms'
    • PERL-424 MongoDB::Cursor 'count' method has been deprecated.
    • PERL-511 Use new CRUD method names for Bulk API and deprecate old ones
    • PERL-516 Deprecated legacy index management API methods
    • PERL-533 Deprecated 'save' method
    • PERL-534 Deprecated 'validate' method
  • Additions
    • PERL-413 Added max_time_ms MongoDB::MongoClient configuration option to set default for database and collection objects
    • PERL-486 Added 'has_modified_count' method to MongoDB::UpdateResult and MongoDB::BulkWriteResult to ease detection of when that attributes is supported by a server or not.
    • PERL-490 Added 'list_collections' method on MongoDB::Database
    • PERL-500 Added 'topology_status' method to MongoDB::MongoClient
    • PERL-506 Added support for serializing/deserializing Time::Moment objects
    • PERL-515 Added new MongoDB::IndexView API
    • PERL-533 Added 'save_one' method for idempotent replace-or-upsert
  • Bug fixes
    • PERL-536 Fixed GridFS to stop throwing an error when a known empty file has no chunks; errors will still be thrown if a non-empty file has no chunks.
    • PERL-540 Fixed memory leak in DateTime::Tiny inflation
    • PERL-543 Fixed a bug serializing undef from Tie::IxHash objects
  • Changes
    • PERL-127 Integers that fit in 32-bits are now encoded as BSON Int32; larger integers are encodeed as BSON Int64; Math::BigInt objects are always encoded as BSON Int64.
    • PERL-488 MongoDB::WriteConcern method 'is_safe' renamed to 'is_acknowledged'.
    • PERL-529 Ignores connection string option key case
    • PERL-530 Warns on unsupported connection options
  • Documentation
    • PERL-524 updated legacy author emails in docs and metadata.
  • Testing
    • PERL-513 Added maxTimeMS tests for CRUD API methods
  • Removals
    • PERL-467 Removed outdated MongoDB::Indexing document.
  • ~ Internal changes ~
    • PERL-455 Now using connect timeout as socket timeout for topology scans

Changes for version v0.999.998.6 - 2015-05-20 (TRIAL RELEASE)

  • !!! Incompatible Changes !!!
    • PERL-505 When inserting a document without an '_id' field, the _id will be added during BSON encoding, but the original document will not be changed. (This was inconsistent between regular and bulk insertion in the v0.x series and during previous alpha releases.)
    • PERL-519 The $MongoDB::BSON::use_binary global variable has been removed. Binary data always decodes to MongoDB::BSON::Binary objects (which now overload stringification). This ensures that binary data will correctly round-trip.
    • PERL-520 The $MongoDB::BSON::utf8_flag_on global varialbe has been removed. BSON strings will always be decoded to Perl character strings. This ensures that string data will correctly round-trip.
    • The $MongoDB::BSON::looks_like_number and $MongoDB::BSON::char global variables now ONLY have an effect at MongoDB::MongoClient construction. Changing them later does not change BSON encoding. Both are deprecated as well and should not be used in new code. Instead, the enhanced MongoDB::BSON codec class has attributes that encapsulate these behaviors.
    • PERL-221 The 'inflate_regexps' MongoDB::MongoClient option has been removed. BSON regular expressions always decode to MongoDB::BSON::Regexp objects. This ensure safety and consistency with other drivers.
    • The 'inflate_dbrefs' MongoDB::MongoClient option has been removed. By default, dbrefs are always inflated to MongoDB::DBRef objects.
    • The 'dt_type' MongoDB::MongoClient option has been deprecated and made read-only. It now only takes effect if C<MongoDB::MongoClient> constructs a MongoDB::BSON codec object and is read-only so that any code that relied on changing it after client construction will fail rather that being silently ignored.
  • *** Deprecations ***
    • As mentioned above, 'dt_type', '$MongoDB::BSON::looks_like_number' and '$MongoDB::BSON::char' have been deprecated in addition to their other behavior changes.
  • Additions
    • Added 'with_codec' method to MongoDB::Collection for easier localized changes to codec attributes.
  • Changes
    • PERL-331 The MongoDB::BSON package is now a full class, implementing a BSON encoder-decoder (codec). It can be supplied as an attribute to MongoDB::MongoClient, MongoDB::Database and MongoDB::Collection objects.
  • Fixes
    • PERL-531 Bulk update/replace documents would not validate properly when $MongoDB::BSON::char was not '$'. While that functionality has moved to the MongoDB::BSON codec instead of the global variable, all update/replace documents (bulk and CRUD API) are now validated after key munging.
    • Fixed a number of XS memory leaks from non-mortalized variables during BSON encoding.
    • Fixed t/gridfs to work around a bug in MongoDB 3.1.2.
    • Fixed BSON double tests on Perls with long-doubles enabled
  • ~ Internal changes ~
    • PERL-325 Updated vendored ppport.h to version 3.31
    • Refactored and reorganized perl-mongo.h and perl_mongo.c. Removed unused functions and macros.
    • Removed unused vendored libyajl files.


The data types used with MongoDB
Some examples of MongoDB syntax
Getting started with MongoDB
Deprecations and behavior changes from the v0 driver


Official MongoDB Driver for Perl
Tools for serializing and deserializing data in BSON form
MongoDB binary type
Regular expression type
MongoDB bulk write interface
MongoDB bulk write result document
Bulk write operations against a query document
JavaScript Code
A MongoDB Collection
MongoDB generic command result document
A lazy cursor for Mongo query results
A MongoDB database reference
A MongoDB Database
MongoDB deletion result object
MongoDB Driver Error classes
A file storage utility
A Mongo GridFS file
Index management for a collection
MongoDB single insert result object
MongoDB single insert result object
A connection to a MongoDB server or multi-server deployment
A Mongo Object ID
An iterator for Mongo query results
An iterator for Mongo query results with client-side filtering
Encapsulate and validate read preferences
Replication timestamp
MongoDB unacknowledged result object
MongoDB update result object
Encapsulate and validate a write concern


in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/
in lib/MongoDB/