Releases: mongodb/mongo-go-driver
MongoDB Go Driver 1.1.0
The MongoDB Go driver team is pleased to release 1.1.0 of the official Go driver.
This release contains support for MongoDB server version 4.2.
Documentation can be found on GoDoc and the MongoDB documentation site. BSON library documentation is also available on GoDoc. Questions and inquiries can be asked on the mongo-go-driver Google Group. Bugs can be reported in the Go Driver Jira where a list of current issues can be found.
Core Driver Redesign
The lower-level driver implementation was redesigned. The improved lower-level driver contained improvements to increase maintainability and greatly increase performance.Connection Pool Monitoring
The Connection Monitoring and Pooling specification has been implemented. This changes the pool implementation to LIFO, which improves connection utilization. The addition ofevent.PoolMonitor
enables users to monitor various connection and connection pool related events.
Release Notes
Bug
- [GODRIVER-1018] - record codeName for WriteConcernErrors
- [GODRIVER-1073] - ChangeStream spec's Resumable Error definition is too broad
- [GODRIVER-1084] - Data race in topology tests
- [GODRIVER-1085] - Change stream test failures on Evergreen
- [GODRIVER-1100] - Closing batch cursor after find gets "ended session was used"
- [GODRIVER-1107] - SetHint causes InvalidBSON error
- [GODRIVER-1108] - Operation.addReadConcern encodes "empty" ReadConcern
- [GODRIVER-1114] - RunCommandCursor always fails and returns an error message referencing internal driver details
- [GODRIVER-1130] - Pinned Servers should be cleared properly
- [GODRIVER-1153] - nil pointer asMDoc
- [GODRIVER-1160] - driver.BatchCursor Next returns true when first batch is empty
- [GODRIVER-1187] - Find() uses a write selector instead of a read selector
- [GODRIVER-1215] - lastWriteDate is parsed from isMaster incorrectly
- [GODRIVER-1224] - Race detected in x/mongo/driver/topology
- [GODRIVER-1226] - localThresholdMS does not default to 15 ms
New Feature
- [GODRIVER-620] - Implement Unified URI Options
- [GODRIVER-621] - Implement Convenient API for Transactions
- [GODRIVER-622] - Implement Connection Monitoring and Pooling spec
- [GODRIVER-623] - Support mongos pinning for sharded transactions
- [GODRIVER-624] - Retryable Reads
- [GODRIVER-625] - Support polling SRV records for mongos discovery
- [GODRIVER-628] - Connections survive primary stepdown
- [GODRIVER-637] - Support sharded transactions recovery token
- [GODRIVER-680] - Support running commands as aggregation
- [GODRIVER-690] - Transaction test runner should use "local" read concern when asserting the final collection state
- [GODRIVER-723] - Missing ListCollectionNames
- [GODRIVER-736] - Add comparison methods to primitive.Timestamp
- [GODRIVER-745] - Resync change stream tests to test all new notification types
- [GODRIVER-765] - Support 'startAfter' option to the $changeStream stage
- [GODRIVER-808] - Add support for Split-Horizon Topology
- [GODRIVER-822] - Support Retryable Writes on by Default
- [GODRIVER-824] - Support postBatchResumeToken in change streams
- [GODRIVER-841] - Resync SDAM tests to only examine non-unknown server descriptions to determine incompatibility
- [GODRIVER-845] - Add support for majority read concern level to Aggregation $out
- [GODRIVER-913] - countDocuments should use group with _id: 1
- [GODRIVER-916] - Cursor method to decode all results into a slice
- [GODRIVER-919] - Add the ability to specify a pipeline to an update command
- [GODRIVER-927] - Create new driver package
- [GODRIVER-928] - Update topology.Topology type
- [GODRIVER-929] - Create topology.pool type
- [GODRIVER-930] - Implement base driver.Connection type
- [GODRIVER-931] - Implement topology.legacyConnection type
- [GODRIVER-932] - Update topology.Server type
- [GODRIVER-978] - Implement driver.Operation
- [GODRIVER-984] - Add support for legacy find, getMore, and killCursors to driver.Operation
- [GODRIVER-985] - Design & Implement drivergen
- [GODRIVER-992] - Add compression to driver.Operation
- [GODRIVER-993] - Add command monitoring to driver.Operation
- [GODRIVER-1081] - Allow applications to set maxTimeMS for commitTransaction
- [GODRIVER-1209] - Create LocalAddresser interface and make topology.Connection implement it
- [GODRIVER-1219] - Raise an actionable error message when retryWrites fails due to using an unsupported storage engine
Task
- [GODRIVER-589] - Bump wire protocol version for 4.2
- [GODRIVER-968] - Add tests for postBatchResumeToken support
- [GODRIVER-969] - Test writes in transactions do not send writeConcern when collection write concern is w=0
- [GODRIVER-970] - Amend change stream missing resume token tests for wire version 8+
- [GODRIVER-1009] - Implement batch cursor in driver lib
- [GODRIVER-1015] - Set OP_MSG flags in driver.Operation
- [GODRIVER-1026] - Skip ReadWireMessage for unacknowledged writes
- [GODRIVER-1035] - Clear pinned server on TransientTransa...
MongoDB Go Driver 1.0.4
The MongoDB Go driver team is pleased to release version 1.0.4 of the official Go driver.
This release contains several bug fixes. Please refer to the Jira issues below for more information.
Documentation can be found on GoDoc and the MongoDB documentation site. BSON library documentation is also available on GoDoc. Questions and inquiries can be asked on the mongo-go-driver Google Group. Bugs can be reported in the Go Driver Jira where a list of current issues can be found.
Release Notes
Bug
- [GODRIVER-1013] - When reading whole file at once next read doesn't return EOF
- [GODRIVER-1096] - When limit is set with a BatchCursor connected to a legacy server, a connection is leaked
- [GODRIVER-1131] - QueryFailureError not wrapped in CommandError
- [GODRIVER-1132] - Legacy ListCollections in driverlegacy does not filter indexes
Improvement
- [GODRIVER-1021] - Specify behavior where connection string contain auth database but no credentials
MongoDB Go Driver 1.0.3
The MongoDB Go driver team is pleased to release version 1.0.3 of the official Go driver.
This release contains several bug fixes. Please refer to the Jira issues below for more information.
Documentation can be found on GoDoc and the MongoDB documentation site. BSON library documentation is also available on GoDoc. Questions and inquiries can be asked on the mongo-go-driver Google Group. Bugs can be reported in the Go Driver Jira where a list of current issues can be found.
Release Notes
Bug
- [GODRIVER-1012] - Downloading big files from gridfs ends with ErrWrongSize
- [GODRIVER-1016] - Get current op on MongoDB 2.6
- [GODRIVER-1068] - Need to call ping in Ping()
- [GODRIVER-1078] - Allow specifying empty value for connection URI readPreferenceTags option
- [GODRIVER-1086] - Can leak creds through errors from URI Parsing
MongoDB Go Driver 1.0.2
The MongoDB Go driver team is pleased to release version 1.0.2 of the official Go driver.
This release contains several bug fixes. Please refer to the Jira issues below for more information.
Documentation can be found on GoDoc and the MongoDB documentation site. BSON library documentation is also available on GoDoc. Questions and inquiries can be asked on the mongo-go-driver Google Group. Bugs can be reported in the Go Driver Jira where a list of current issues can be found.
Release Notes
Bug
- [GODRIVER-867] - options.FindOptions.SetLimit() docs suggest negative limits are still supported, but they're not
- [GODRIVER-975] - bulk write doesn't report write concern error
- [GODRIVER-983] - extjson date parser doesn't work for dates after the year 2262
- [GODRIVER-989] - ChangeStream Next nil Pointer Dereference
- [GODRIVER-1005] - Decoding SingleResult or cursor to nil pointer type panics
Improvement
- [GODRIVER-1004] - SingleResult.Decode only works once
MongoDB Go Driver 1.0.1
The MongoDB Go driver team is pleased to release version 1.0.1 of the official Go driver.
This release fixes a race condition in handshaking, panics in GridFS, and improves documentation. Additionally, some small API changes have been made.
Documentation can be found on GoDoc and the MongoDB documentation site. BSON library documentation is also available on GoDoc. Questions and inquiries can be asked on the mongo-go-driver Google Group. Bugs can be reported in the Go Driver Jira where a list of current issues can be found.
Release Notes
Bug
- [GODRIVER-809] - Go driver cannot decode gridfs files collection documents if the length field is not stored as int64
- [GODRIVER-880] - Cannot query when having a regular expression in MongoDB Document
- [GODRIVER-881] - ObjectID should be quoted in bsoncore.Value's String() method
- [GODRIVER-884] - Default for timestamps is a zero'd *time.Location, instead of `nil`
- [GODRIVER-886] - Panic when passing non-ObjectID file ID to bucket.OpenDownloadStream
- [GODRIVER-887] - Panic when passing in UploadOptions with Metadata but no Registry to bucket.OpenUploadStream
- [GODRIVER-888] - GoDoc out of date for cursor example
- [GODRIVER-893] - bsonrw.valueReader skip does not properly skip regular expressions
- [GODRIVER-898] - Topology should synchronously update ServerDescriptions
- [GODRIVER-900] - Server string representation typo: Avergage RTT
- [GODRIVER-901] - Race detector flagged race
- [GODRIVER-908] - options.MergeClientOptions doesn't handle errors properly
- [GODRIVER-910] - panic when calling Watch on a Client that has not been connected
- [GODRIVER-956] - Legacy Find is not respecting limit
New Feature
- [GODRIVER-873] - BulkWriteResult from BulkWrite doesn't have errors in unordered bulk
Improvement
- [GODRIVER-864] - Upgrade testing to go 1.12
- [GODRIVER-896] - Document Docker DNS issue
MongoDB Go Driver 1.0.0
The MongoDB Go driver team is pleased to release version 1.0.0 of the official Go driver.
This release fixes retryable writes for batch split write commands and fixes documentation errors.
Documentation can be found on GoDoc and the MongoDB documentation site. BSON library documentation is also available on GoDoc. Questions and inquiries can be asked on the mongo-go-driver Google Group. Bugs can be reported in the Go Driver Jira where a list of current issues can be found.
Release Notes
Bug
- [GODRIVER-871] - Retryable Writes is broken for batch splits
New Feature
- [GODRIVER-790] - Drivers should use majority write concern when retrying commitTransaction
- [GODRIVER-844] - Resync transaction spec tests for bulk write error reporting change
MongoDB Go Driver 1.0.0 Release Candidate 2
The MongoDB Go driver team is pleased to release v1.0.0-rc2 of the official Go driver.
This release fixes zlib compression and contains several smaller bug fixes.
Documentation can be found on GoDoc and the MongoDB documentation site. BSON library documentation is also available on GoDoc. Questions and inquiries can be asked on the mongo-go-driver Google Group. Bugs can be reported in the Go Driver Jira where a list of current issues can be found.
Using Dep
If you are using `dep` to retrieve the Go driver, please ensure that dep has pinned the correct version. The `dep` tool prefers released versions over pre-release versions, so it is likely that `dep` will retrieve version `0.3.0` instead of `1.0.0-rc2`. You can use the command below to retrieve the correct version.dep ensure -add "go.mongodb.org/mongo-driver/mongo@>=1.0.0-rc1"
Release Notes
Bug
- [GODRIVER-836] - zLib compression does not work
- [GODRIVER-840] - Docs out of date for how to connect
- [GODRIVER-848] - bson can not marshal datetime ISODate json correct
- [GODRIVER-856] - Chunks collection files_id_1_n_1 index not unique
New Feature
- [GODRIVER-698] - Support for GSSAPI "ServiceHost"
MongoDB Go Driver 1.0.0 Release Candidate 1
The MongoDB Go driver team is pleased to release v1.0.0-rc1 of the official Go driver.
This release changes the import path for the driver from github.com/mongodb/mongo-go-driver
to go.mongodb.org/mongo-driver
. If you have previously downloaded the driver you will need to move it to the new location within your GOPATH.
Documentation can be found on GoDoc and the MongoDB documentation site. BSON library documentation is also available on GoDoc. Questions and inquiries can be asked on the mongo-go-driver Google Group. Bugs can be reported in the Go Driver Jira where a list of current issues can be found.
New Import Path
The base import path for the driver has changed. The new path isgo.mongodb.org/mongo-driver
. Package locations under the import path remain the same, e.g. the mongo
package is located under go.mongodb.org/mongo-driver/mongo
.
mongo.Client
Creation
The mongo.Client
construction functions no longer take a string URI parameter. Instead, a MongoDB URI can be provided as an option.
Previous API: mongo.NewClient("mongodb://localhost:27017/")
New API: mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017/"))
Release Notes
Bug
- [GODRIVER-767] - client.Disconnect(nil) causes a panic
- [GODRIVER-768] - documentation example test failing
- [GODRIVER-789] - Deprecated Count method is still in the public API
- [GODRIVER-802] - Document fields corrupted in transformAndEnsureID
- [GODRIVER-805] - BSON field '$changeStream.maxAwaitTimeMS' is an unknown field
- [GODRIVER-811] - Modify change stream test to only run if WireVersion < 8
- [GODRIVER-812] - Server String() function access unprotected variables
- [GODRIVER-813] - Aggregate Test Failing
- [GODRIVER-815] - Can only interact with GridFS files by id via ObjectIds
- [GODRIVER-817] - Fix killCursor helper in collection tests
- [GODRIVER-819] - driver.KillCursors broken
- [GODRIVER-831] - GSSAPI Authentication starts SASL conversation wrong
- [GODRIVER-833] - GridFS default chunk size is 255 kB, not 255 KiB
- [GODRIVER-839] - GoDoc for mongo.Client does not match API
- [GODRIVER-846] - Unable to authenticate to a replica set member using the keyfile
New Feature
- [GODRIVER-524] - Implement SDAM Error Handling
- [GODRIVER-775] - Cannot parse MongoDB Extended JSON from mongoexport
- [GODRIVER-803] - Add option to allow authenticating with an arbiter
Task
- [GODRIVER-194] - Add pipeline stage to ChangeStreams example for Docs
- [GODRIVER-422] - Provide Transactions example for Docs
- [GODRIVER-788] - Update Transactions Retry Example 3 to include read preference
Improvement
- [GODRIVER-120] - Alternative Import Path
- [GODRIVER-572] - TransformDocument should document how it handles nil
- [GODRIVER-600] - Add test that read operations ignore db/collection readConcern in transaction
- [GODRIVER-727] - Clean up mongo.newClient
- [GODRIVER-731] - Maps inside structs are not zeroed
- [GODRIVER-747] - Allow TLSConfig as a client option
- [GODRIVER-787] - Make file should run documentation examples
- [GODRIVER-793] - Remove all public use of 'x' packages in the options package
- [GODRIVER-800] - Modify BatchCursor to return batch as a single slice of documents
- [GODRIVER-807] - Add attribution for Gopher logo
- [GODRIVER-828] - Create mongo.CommandError to wrap command.Error
MongoDB Go Driver Beta 3
The MongoDB Go driver team is pleased to release the third and final beta release of the official Go driver.
This release changes the API for cursor, numerous documentation updates and fixes, and other small API changes.
Documentation can be found on GoDoc and the MongoDB documentation site. Questions and inquiries can be asked on the mongo-go-driver Google Group. Bugs can be reported in the Go Driver Jira where a list of current issues can be found.
Cursor and ChangeStream API changed
This release changes themongo.Cursor
type from an interface
to a struct
and adds a mongo.ChangeStream
struct
type which is returned from Watch
methods. The DecodeBytes
method on each has been replaced with a struct level property called Current
. The bson.Raw bytes of this property are only valid until the next call to Next
or Close
on the Cursor
or ChangeStream
.
Previous usage:
var cur mongo.Cursor
for cur.Next(context.TODO()) {
rdr, err := cur.DecodeBytes()
if err != nil {
return err
}
// Do something with rdr
}
New usage:
var cur *mongo.Cursor
for cur.Next(context.TODO()) {
rdr := cur.Current
// Do something with rdr
}
Release Notes
Bug
- [GODRIVER-743] - UpdateOne and UpdateMany should return error when update parameter is of zero length
- [GODRIVER-746] - ChangeStream Next doesn't getMore after error case
- [GODRIVER-756] - Incorrect formatting of numbers with exponents in JSON
- [GODRIVER-757] - README out of date WRT using nil in Find
- [GODRIVER-769] - Remove use of internal package from connstring package
- [GODRIVER-784] - GridFS RoundTrip test fails with race detector on
- [GODRIVER-791] - Panic on cursor Close with a dead server
New Feature
- [GODRIVER-400] - reorder conditionals to return write errors if a write concern error is also present.
- [GODRIVER-758] - options.Collation is missing Normalization
Task
- [GODRIVER-754] - Improve test coverage for GridFS
Improvement
- [GODRIVER-3] - Change driver.Cursor to be a batch cursor
- [GODRIVER-704] - Document that mongo.SessionContext is not goroutine safe
- [GODRIVER-707] - method/operation to determine if a write error is a duplicate key error
- [GODRIVER-713] - Remove string key restriction for Encoder and Decoder lookups
- [GODRIVER-714] - KeepAlive is not enabled by default
- [GODRIVER-717] - IntEncodeValue should encode int's within 32bits as int32s
- [GODRIVER-733] - Add diagnostic information to server selection errors
- [GODRIVER-751] - Incorrect example in godoc website
- [GODRIVER-753] - Change GridFS implementation to not have partial chunks
- [GODRIVER-759] - Make Cursor a struct and make changeStream public
- [GODRIVER-764] - bulk write operation dependencies
- [GODRIVER-772] - README requirements section still lists v3.2 as minimum version
- [GODRIVER-781] - Inconsistent use of time.Duration and int64 in options
MongoDB Go Driver Beta 2
The MongoDB Go driver team is pleased to release the second beta release of the official Go driver.
This release fixes a number of API and functionality bugs within the driver and includes support for MongoDB server versions 2.6 and 3.0.
Documentation can be found on GoDoc and the MongoDB documentation site. Questions and inquiries can be asked on the mongo-go-driver Google Group. Bugs can be reported in the Go Driver Jira where a list of current issues can be found.
Legacy Server Support
This release adds support for MongoDB server versions 2.6 and 3.0. This brings the supported range of MongoDB server versions to 2.6 to 4.0 inclusive.Release Notes
Bug
- [GODRIVER-641] - Connect direct to a replica set member also requires ReadPreference to be set
- [GODRIVER-659] - Collection allows insertion of a nil value
- [GODRIVER-660] - _id should be prepended, not appended
- [GODRIVER-667] - Default write concern should not be appended.
- [GODRIVER-668] - Write concern should not be encoded for certain commands based on wire version.
- [GODRIVER-675] - Nil pointer implementing Zeroer interface should not cause panic
- [GODRIVER-676] - Panic marshaling a nil ObjectID
- [GODRIVER-679] - Aggregate does not accept a bson.A as the pipeline
- [GODRIVER-681] - Cursors and SingleResult ignore client custom registry
- [GODRIVER-688] - ClientOptions.SetSSL() records some string options as being set even if they're empty strings
- [GODRIVER-691] - ArrayEncodeValue and SliceEncodeValue don't properly handle nil for primitive.Element
- [GODRIVER-692] - SingleResult.Decode to struct panics with nil pointer dereference
- [GODRIVER-693] - Opening a change stream cursor for any database gives error
- [GODRIVER-694] - UnmarshalExtJSON panics with invalid json
- [GODRIVER-696] - SingleResult should use bson.DefaultRegistry when Registry is nil
- [GODRIVER-697] - nil panics being encoded via bson.Marshal
- [GODRIVER-699] - Decoding into a bson.M embeds bson.Ds, not bson.Ms
- [GODRIVER-700] - JSON scanner fails when underlying reader reads less than the requested bytes and also returns io.EOF
- [GODRIVER-701] - ReadPreference on client is not respected
- [GODRIVER-708] - bsonx package is exposed in the public API of some stable packages
- [GODRIVER-710] - Unmarshaling to a interface{} fails
- [GODRIVER-715] - driver.KillCursors does not close connection
- [GODRIVER-719] - Map Decoder should support non-primitive string types
- [GODRIVER-724] - Downloading files from gridfs does not match uploaded data
- [GODRIVER-725] - Numbers that look like integers but are too big should be treated as doubles
- [GODRIVER-726] - Server.heartbeat uses no timeouts
- [GODRIVER-735] - ListCollections does not use read preference primary
- [GODRIVER-741] - Option "serverSelectionTimeoutMS" is ignored if set in connection URI
Epic
- [GODRIVER-138] - Add support for legacy servers
New Feature
- [GODRIVER-109] - Implement legacy OP_QUERY, OP_GET_MORE and OP_KILL_CURSORS
- [GODRIVER-492] - Implement legacy collection enumeration
- [GODRIVER-677] - Alias needed in bson package for primitive.E
- [GODRIVER-742] - Supported parsing extended JSON containing $date without $numberLong
Improvement
- [GODRIVER-279] - Implement legacy index enumeration
- [GODRIVER-581] - Add documentation for new bsoncodec package
- [GODRIVER-663] - Extend the Marshal* and Unmarshal* family functions with *WithContext functions
- [GODRIVER-665] - Support only "automatic" and "direct" as values for "connect" URI option
- [GODRIVER-669] - Reverse Dependencies between bson and bsonx
- [GODRIVER-683] - Make CommandMetadata struct private inside connection.go
- [GODRIVER-729] - Add IndexOptions struct to use as the type of IndexModel.Options