Skip to content

Releases: mongodb/mongo-go-driver

MongoDB Go Driver 1.1.0

13 Aug 16:12
Compare
Choose a tag to compare

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 of event.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...
Read more

MongoDB Go Driver 1.0.4

09 Jul 18:42
Compare
Choose a tag to compare

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

06 Jun 21:15
Compare
Choose a tag to compare

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

16 May 20:09
Compare
Choose a tag to compare

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

MongoDB Go Driver 1.0.1

18 Apr 19:14
Compare
Choose a tag to compare

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

MongoDB Go Driver 1.0.0

13 Mar 20:46
Compare
Choose a tag to compare

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

07 Mar 22:47
Compare
Choose a tag to compare

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

New Feature

MongoDB Go Driver 1.0.0 Release Candidate 1

22 Feb 20:41
Compare
Choose a tag to compare

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 is go.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

01 Feb 17:28
Compare
Choose a tag to compare
Pre-release

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 the mongo.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

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

08 Jan 18:19
Compare
Choose a tag to compare
Pre-release

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

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