Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
1138 lines (751 sloc) 35.7 KB
=============================
Release Notes for MongoDB 3.6
=============================
.. default-domain:: mongodb
.. contents:: On this page
:local:
:backlinks: none
:depth: 1
:class: twocols
Minor Releases
--------------
3.6.13 - Jun 10, 2019
~~~~~~~~~~~~~~~~~~~~~~
Issues fixed:
- :issue:`SERVER-16571`: Use Actual Memory Constraint vs. Total System Memory When They Differ
- :issue:`SERVER-38984`: Attach IDs to users
- :issue:`SERVER-41213`: Unique background index builds may produce inconsistent keys
- :issue:`SERVER-37765`: Platform Support: Remove Ubuntu 14.04
- :issue:`SERVER-37774`: Platform Support: Remove Enterprise Ubuntu 16.04 PPCLE
- `All JIRA issues closed in 3.6.13
<https://jira.mongodb.org/issues/?jql=project%20in%20(SERVER%2CTOOLS%2CWT)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%273.6.13%27>`_
- :ref:`3.6.13-changelog`
3.6.12 - April 8, 2019
~~~~~~~~~~~~~~~~~~~~~~
Issues fixed:
- :issue:`SERVER-35219`: Regain MongoDB balancer performance with sessions
- :issue:`SERVER-39847`: Migrating session info can trigger fassert when destination shard has transaction history truncated by oplog
- :issue:`SERVER-37255`: replSetReconfig with concurrent election can trigger invariant
- :issue:`SERVER-39394`: Views collation check should traverse through nested $lookup pipelines
- :issue:`SERVER-39487`: Aggregation operator $sqrt output for NumberDecimal is the same as $exp
- :issue:`SERVER-37722`: Quiet mode does not suppress connection end events
- `All JIRA issues closed in 3.6.12
<https://jira.mongodb.org/issues/?jql=project%20in%20(SERVER%2CTOOLS%2CWT)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%273.6.12%27>`_
- :ref:`3.6.12-changelog`
3.6.11 - Mar 1, 2019
~~~~~~~~~~~~~~~~~~~~~
Issues fixed:
- :issue:`SERVER-32146`: Log slow oplog entry application
- :issue:`SERVER-9043`: Link `flushRouterConfig` on the config server and shards
- :issue:`SERVER-37624`: Sessions never expire when you change value of localLogicalSessionTimeoutMinutes
- :issue:`SERVER-38344`: Early release of distributed database locks during initial collection sharding results in migration/split failures
- :issue:`SERVER-39166`: $graphLookup should force a pipeline to split in sharded cluster
- `All JIRA issues closed in 3.6.11
<https://jira.mongodb.org/issues/?jql=project%20in%20(SERVER%2CTOOLS%2CWT)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%273.6.11%27>`_
- :ref:`3.6.11-changelog`
3.6.10 - Jan 22, 2019
~~~~~~~~~~~~~~~~~~~~~
Issues fixed:
- :issue:`SERVER-29825`: Do not allow rename from unreplicated to replicated DB or vice-versa
- :issue:`SERVER-35936`: MongoDB Community installer fails to install Compass
- :issue:`SERVER-36977`: Initial mongod.log is created using umask vs mode 600
- :issue:`SERVER-37080`: Implement :parameter:`tuneable batch size for chunk migrations <migrateCloneInsertionBatchSize>`
- :issue:`SERVER-37616`: Implement :parameter:`tuneable batch size for the rangedeleter <rangeDeleterBatchSize>`
- :issue:`SERVER-37182`: Different values when referencing whole object vs. a field of that object after $arrayToObject
- :issue:`SERVER-37200`: $match stage following $listSessions not working against mongos
- `All JIRA issues closed in 3.6.10
<https://jira.mongodb.org/issues/?jql=project%20in%20(SERVER%2CTOOLS%2CWT)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%273.6.10%27>`_
- :ref:`3.6.10-changelog`
3.6.9 - Nov 16, 2018
~~~~~~~~~~~~~~~~~~~~
Issues fixed:
- :issue:`SERVER-32943`: Query during background index build can lead to suboptimal cached plan
- :issue:`SERVER-35657`: Do not delay journal flushes when operations are waiting for oplog visibility
- :issue:`SERVER-37058`: Update with numeric field names inside an array can cause validation to fail
- :issue:`SERVER-37132`: Negation of $in with regex can incorrectly plan from the cache, leading to missing query results
- `All JIRA issues closed in 3.6.9
<https://jira.mongodb.org/issues/?jql=project%20in%20(SERVER%2CTOOLS%2CWT)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%273.6.9%27>`_
- :ref:`3.6.9-changelog`
3.6.8 - Sep 19, 2018
~~~~~~~~~~~~~~~~~~~~
Issues fixed:
- :issue:`SERVER-34204`: Tailable cursor fails on getMore against a
sharded cluster.
- :issue:`SERVER-34846`: Covered index with collated field returns
incorrect result when collation not involved in match or sort.
- :issue:`SERVER-37002`: Dropping a collection with long index names
via rename fails under MMAPv1.
- :issue:`SERVER-36149`: Fix privileges on setFCV virtual namespace.
- `All JIRA issues closed in 3.6.8
<https://jira.mongodb.org/issues/?jql=project%20in%20(SERVER%2CTOOLS%2CWT)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%273.6.8%27>`_
- :ref:`3.6.8-changelog`
3.6.7 - Aug 25, 2018
~~~~~~~~~~~~~~~~~~~~
Issues fixed:
- :issue:`SERVER-27725`: Use batch insert when migrating chunks
- :issue:`SERVER-36070`: Aggregation with $out results in error when Auditing is enabled
- :issue:`TOOLS-2075`: mongoreplay always replays to secondary
- `All JIRA issues closed in 3.6.7
<https://jira.mongodb.org/issues/?jql=project%20in%20(SERVER%2CTOOLS%2CWT)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%273.6.7%27>`_
- :ref:`3.6.7-changelog`
3.6.6 - Jul 10, 2018
~~~~~~~~~~~~~~~~~~~~
Issues fixed:
- :issue:`SERVER-33538`: ``mapReduce`` "replace" on a sharded output collection can lead to UUIDCatalog inconsistencies.
- :issue:`SERVER-32999`: Platform Support: Remove Debian 7 builds.
- :issue:`SERVER-5461` Add ``syncSourceHost`` field to ``replSetGetStatus`` output.
- `All JIRA issues closed in 3.6.6
<https://jira.mongodb.org/issues/?jql=project%20in%20(SERVER%2CTOOLS%2CWT)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%273.6.6%27>`_
- :ref:`3.6.6-changelog`
3.6.5 - May 29, 2018
~~~~~~~~~~~~~~~~~~~~
Issues fixed:
- :issue:`SERVER-34746`: Segmentation fault when shard is started with ``--shardsvr`` before being added to a shard.
- :issue:`SERVER-34423`: collMod interruption may cause invariant failure.
- :issue:`SERVER-34390`: MongoDB binaries for macOS support TLS 1.2.
- :issue:`SERVER-29463`: Platform Support: add Debian 9 "stretch".
- :issue:`SERVER-34399`: $changeStream with invalid resume token crashes the server.
- :issue:`SERVER-29301`: Upgrade MozJS to ESR 45.9.0.
- `All JIRA issues closed in 3.6.5
<https://jira.mongodb.org/issues/?jql=project%20in%20(SERVER%2CTOOLS%2CWT)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%273.6.5%27>`_
- :ref:`3.6.5-changelog`
3.6.4 - Apr 13, 2018
~~~~~~~~~~~~~~~~~~~~
Issues fixed:
- :issue:`SERVER-28670`: Add sharding metadata refresh metrics section to serverStatus.
- :issue:`SERVER-32677`: Segmentation fault converting ReplicaSet to Replicated Shard Cluster.
- :issue:`SERVER-33763`: 3.6 drivers fail to communicate with 3.6 sharded clusters running at FCV 3.4.
- :issue:`SERVER-32923`: Remove SLES11 support.
- :issue:`SERVER-31535`: Remove Ubuntu 12.04 support.
- :issue:`SERVER-32498`: ``currentOp`` output no longer returns ``threadId`` field.
- `All JIRA issues closed in 3.6.4
<https://jira.mongodb.org/issues/?jql=project%20in%20(SERVER%2CTOOLS%2CWT)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%273.6.4%27>`_
- :ref:`3.6.4-changelog`
3.6.3 - February 23, 2018
~~~~~~~~~~~~~~~~~~~~~~~~~
Issues fixed:
- :issue:`SERVER-32441`: 3.6 :binary:`~bin.mongod` crash on find with index and nested ``$and``/``$or``.
- :issue:`SERVER-32606`: Tailing oplog on secondary fails with CappedPositionLost
- :issue:`SERVER-32631`: specifying ``--bind_ip`` localhost results in error "address already in use"
- `All JIRA issues closed in 3.6.3
<https://jira.mongodb.org/issues/?jql=project%20in%20(SERVER%2CTOOLS%2CWT)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%273.6.3%27>`_
- :ref:`3.6.3-changelog`
3.6.2 - January 10, 2018
~~~~~~~~~~~~~~~~~~~~~~~~
Issues fixed:
- :issue:`SERVER-31267`: CollectionCloner fails if collection is
dropped between getMore calls.
- :issue:`SERVER-31625`: The contents of ``Unknown macro: {USER}`` needs to
be escaped when querying for the groups using LDAP server.
- :issue:`SERVER-31684`: QueryPlanKilled (operation exceeded time
limit) in $changeStream with updateLookup.
- :issue:`SERVER-31982`: Shard does not call config commit chunk
migration command with majority writeConcern nor checks for
writeConcern errors..
- :issue:`SERVER-32246`: PID file permission on v3.6 make it not
monitorable using pid file.
- :issue:`SERVER-32255`: UUIDs may be absent from shard secondary local
collections.
- :issue:`SERVER-32282`: Aggregation text search returns text score
even if it wasn't requested when targeting multiple shards in a
sharded cluster.
- :issue:`SERVER-32396` :binary:`~bin.mongo` shell failed to connect with 3.6 connection string SRV
- :issue:`SERVER-32430`: DocumentSourceSort sorts array documents
incorrectly if there is a non-simple collation.
- :issue:`SERVER-32529`: Requiring replSet for shards breaks Queryable
Backup.
- `All JIRA issues closed in 3.6.2
<https://jira.mongodb.org/issues/?jql=project%20in%20(SERVER%2CTOOLS%2CWT)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%273.6.2%27>`_
- :ref:`3.6.2-changelog`
.. _3.6.1-release-notes:
3.6.1 - Dec 26, 2017
~~~~~~~~~~~~~~~~~~~~
Issues fixed:
- :issue:`SERVER-30768`: Primary queries using maxTimeMS cause
temporary shard write unavailability if ExceededTimeLimit.
- :issue:`SERVER-31225`: The :binary:`~bin.mongod` process forks before
listening for connections.
- :issue:`SERVER-31885`: changeStream cursor is not returned on a
:binary:`~bin.mongos` when the database does not exist.
- :issue:`SERVER-32085`: changeStream reports incorrect documentKey for
unsharded collections that become sharded.
- :issue:`SERVER-32046`: Arrays of certain NumberDecimals can trigger
an invariant failure.
- :issue:`SERVER-32048`: Updates using a numeric path component may
cause index entries not to be created.
- `All JIRA issues closed in 3.6.1
<https://jira.mongodb.org/issues/?jql=project%20in%20(SERVER%2CTOOLS%2CWT)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%273.6.1%27>`_
- :ref:`3.6.1-changelog`
Security
--------
.. _3.6-bind-to-localhost:
Default Bind to Localhost
~~~~~~~~~~~~~~~~~~~~~~~~~~
.. include:: /includes/fact-default-bind-ip-change.rst
``MONGODB-CR`` Deprecation
~~~~~~~~~~~~~~~~~~~~~~~~~~
.. include:: /includes/fact-mongodb-cr-deprecated.rst
.. _3.6-authentication-restrictions:
Authentication Restrictions
~~~~~~~~~~~~~~~~~~~~~~~~~~~
To restrict database user connections to specified IP addresses, added
``authenticationRestrictions`` parameter to the following:
.. list-table::
:header-rows: 1
* - Commands
- Methods
* - :dbcommand:`createUser`
- :method:`db.createUser()`
* - :dbcommand:`updateUser`
- :method:`db.updateUser()`
* - :dbcommand:`createRole`
- :method:`db.createRole()`
* - :dbcommand:`updateRole`
- :method:`db.updateRole()`
Additional Security Enhancements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Added the :parameter:`opensslCipherConfig` parameter to control the
OpenSSL ciphers when using TLS/SSL encryption.
- If authentication is turned on, you can only issue a :dbcommand:`getMore`
against cursors you created.
- Added the :authaction:`convertToCapped` action to :authrole:`restore`
role.
.. seealso:: :ref:`3.6-compatibility-enabled`
.. _3.6-rel-notes-aggregation:
Aggregation
-----------
The following features are available starting in MongoDB 3.6.
More Expressive ``$lookup``
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:pipeline:`$lookup` adds support for specifying multiple join
conditions as well as uncorrelated sub-queries by allowing variable
specification and pipeline execution on the joined collection.
For details, see the :pipeline:`$lookup` syntax for
:ref:`lookup-syntax-let-pipeline`.
New Aggregation Stages
~~~~~~~~~~~~~~~~~~~~~~
MongoDB 3.6 adds the following new aggregation pipeline stages:
.. list-table::
:header-rows: 1
:widths: 20 80
* - Operator
- Description
* - :pipeline:`$currentOp`
- Returns a stream of documents containing information
on active and/or dormant operations on a :binary:`~bin.mongod`
instance. Uses the new aggregation helper
:method:`db.aggregate()`.
* - :pipeline:`$listSessions`
- Lists server sessions in the ``system.sessions`` collection in the
``config`` database. Uses the new aggregation helper
:method:`db.aggregate()`.
* - :pipeline:`$listLocalSessions`
- Lists server sessions cached in memory by the server.
New Aggregation Operators
~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:widths: 20 80
* - Operator
- Description
* - :expression:`$arrayToObject`
- Converts an array of key value pairs to a document.
* - :expression:`$objectToArray`
- Converts a document to an array of documents representing
key-value pairs.
* - :expression:`$mergeObjects`
- Combines multiple documents into a single document.
* - :expression:`$dateFromString`
- Converts a date/time string to a date object.
* - :expression:`$dateFromParts`
- Constructs a BSON Date object given the date's constituent
parts.
* - :expression:`$dateToParts`
- Returns a document containing the constituent parts of a date.
New Aggregation Helper
~~~~~~~~~~~~~~~~~~~~~~
MongoDB 3.6 adds a helper, :method:`db.aggregate()`, to perform
aggregations that do not rely on an underlying collection, such
as those that start with :pipeline:`$currentOp` or
:pipeline:`$listLocalSessions`.
New Aggregation Variable
~~~~~~~~~~~~~~~~~~~~~~~~
:variable:`REMOVE` allows for the conditional exclusion of a field.
New Options
~~~~~~~~~~~
:dbcommand:`aggregate` command and the
:method:`db.collection.aggregate()` method support the following new options:
- ``hint`` option to specify the index to use.
.. note::
The ``hint`` does not apply to :pipeline:`$lookup` and
:pipeline:`$graphLookup` stages.
- ``comment`` option to help trace the operation through the database
profiler, currentOp, and logs.
Support for Time Zones
~~~~~~~~~~~~~~~~~~~~~~
MongoDB 3.6 adds support for time zones to :ref:`aggregation date
operators <agg-qr-date-operators>`.
.. seealso:: :ref:`Aggregation Compatibility Changes <aggregate-compatibility>`
Array Update Operator Enhancements
----------------------------------
.. _3.6-arrayFilters:
``arrayFilters``
~~~~~~~~~~~~~~~~
The following commands and methods can accept an ``arrayFilters``
parameter to specify which elements to modify in an array field:
.. list-table::
:header-rows: 1
:widths: 30 70
* - Commands
- Methods
* - :dbcommand:`findAndModify`
- | :method:`db.collection.findOneAndUpdate()`
| :method:`db.collection.findAndModify()`
* - :dbcommand:`update`
- | :method:`db.collection.updateOne()`
| :method:`db.collection.updateMany()`
| :method:`db.collection.update()`
* -
- | :method:`db.collection.bulkWrite()` for :ref:`updateOne and
updateMany operations <bulkwrite-write-operations-updateOneMany>`
| :method:`Bulk.find.arrayFilters()` for ``Bulk()`` operation
methods :method:`~Bulk.find.updateOne()` and
:method:`~Bulk.find.update()`.
Multi-Element Array Updates
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MongoDB 3.6 adds the following new positional operators for update
operations on arrays and nested arrays:
- The all positional :update:`$[]` operator updates all elements in
an array.
- The filtered positional :update:`$[\<identifier\>]` operator updates
all elements in an array that match the :ref:`3.6-arrayFilters`
criteria.
Negative Array Index Position for ``push``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The :update:`$position` modifier for the :update:`push` update operator
can accept a negative array index value to indicate a position starting
from the end of the array.
.. _3.6-drivers:
3.6 Compatible Drivers
----------------------
The following drivers are feature compatible with MongoDB 3.6:
.. include:: /includes/3.6-drivers.rst
DNS-constructed Seedlist ``mongodb+srv``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In addition to the standard connection format, the 3.6 drivers support
a DNS-constructed seedlist. For more information, see
:ref:`connections-dns-seedlist`.
.. _3.6-change-streams:
Change Streams
--------------
MongoDB 3.6 supports opening change streams against replica sets and
sharded clusters with replica set shards.
Change streams allow applications to access real-time data changes
without the complexity and risk of tailing the :term:`oplog`.
Applications can use change streams to subscribe to all data changes
on a collection and respond to those changes.
You can open a change stream from any 3.6-series driver using the
:method:`db.collection.watch()` method. See the documentation for
your preferred driver for complete instructions on usage.
See :ref:`changeStreams` for more information.
.. important::
To use change streams, ``featureCompatibilityVersion`` must be set to
"3.6". For more information, see :ref:`view-fcv` and
:dbcommand:`setFeatureCompatibilityVersion`.
.. _3.6-client-sessions:
Client Sessions
---------------
Causal Consistency
~~~~~~~~~~~~~~~~~~
To provide causal consistency, MongoDB 3.6 enables :ref:`causal
consistency <causal-consistency>` in :ref:`client sessions <sessions>`. A
causally consistent client session denotes that the associated sequence of
read and *acknowledged* write operations have a causal relationship
that is reflected by their ordering. Client applications must ensure
that only one thread at a time executes these operations in a client session.
Applications can start a :ref:`client session <sessions>` and associate operations
with a specific session. Applications must ensure that only one
thread at a time executes these operations in a client session.
.. important::
To use client sessions:
- Clients require :ref:`MongoDB drivers updated for MongoDB 3.6 <3.6-drivers>`.
- ``featureCompatibilityVersion`` must be "3.6". For more
information, see :ref:`view-fcv` and
:dbcommand:`setFeatureCompatibilityVersion`.
.. _3.6-retryable-writes:
Retryable Writes
~~~~~~~~~~~~~~~~
.. important::
For retryable writes:
- Clients require :ref:`MongoDB drivers updated for MongoDB 3.6 <3.6-drivers>`.
- ``featureCompatibilityVersion`` must be "3.6". For more
information, see :ref:`view-fcv` and
:dbcommand:`setFeatureCompatibilityVersion`.
Starting in MongoDB 3.6, :ref:`certain acknowledged write
operations <retryable-write-ops>` on replica sets and sharded clusters are
"retryable" to provide handling of transient network errors or replica
set elections.
With retryable writes, MongoDB drivers automatically retries these
operations upon encountering network errors or encountering a
:ref:`replica set failover <replication-auto-failover>` during which
time the replica set has no primary. To enable retryable writes for the
3.6 drivers, see :urioption:`retryWrites`.
As the retry attempt is made only once, the retryable feature can help
address transient network errors but not persistent network errors.
For more information on retryable writes, see :ref:`retryable-writes`.
``mongo`` Shell Changes
~~~~~~~~~~~~~~~~~~~~~~~
MongoDB 3.6 adds the new command-line option :option:`--retryWrites <mongo --retryWrites>` to
the :binary:`~bin.mongo` shell. The option enables
:ref:`3.6-retryable-writes` in the
:binary:`~bin.mongo` shell.
The following new methods have been added to the ``Mongo()`` connection
object in the :binary:`~bin.mongo` shell:
- :method:`Mongo.isCausalConsistency()`
- :method:`Mongo.startSession()`
- Various :method:`Session` methods
- Various :method:`SessionOptions` methods
Server Sessions
---------------
MongoDB's server sessions, or logical sessions, are the underlying
framework used by :ref:`client sessions <3.6-client-sessions>` to
support :ref:`causal-consistency` and :ref:`retryable writes
<retryable-writes>`.
.. important::
Applications use :ref:`client sessions <3.6-client-sessions>` to
interface with server sessions.
Server sessions are available for standalone :binary:`~bin.mongod`
instances, replica sets, and sharded clusters.
Server Session Commands
~~~~~~~~~~~~~~~~~~~~~~~
Starting in 3.6, MongoDB drivers associate all operations with a server
session, with the exception of unacknowledged writes. If the deployment
enforces authentication/authorization, server sessions are associated
with the authenticated users.
.. include:: /includes/extracts/sessions-commands.rst
Parameters
~~~~~~~~~~
The following new parameters are available for server sessions:
- :parameter:`logicalSessionRefreshMinutes`
- :parameter:`localLogicalSessionTimeoutMinutes`
- :parameter:`maxAcceptableLogicalClockDriftSecs`
Aggregation Stages
~~~~~~~~~~~~~~~~~~
To support server sessions, MongoDB 3.6 adds the following new
aggregation pipeline stages:
.. list-table::
:header-rows: 1
:widths: 20 80
* - Operator
- Description
* - :pipeline:`$listSessions`
- Lists the server sessions in the ``system.sessions`` collection in the
``config`` database.
* - :pipeline:`$listLocalSessions`
- Lists the server sessions cached in memory by the server. Uses
the new aggregation helper :method:`db.aggregate()`.
General
~~~~~~~
:dbcommand:`serverStatus` returns information on the number of
:ref:`server-status-logicalSessions`.
.. _3.6-server-sessions-command-options:
Command Options
~~~~~~~~~~~~~~~
.. include:: /includes/extracts/sessions-options.rst
JSON Schema
-----------
MongoDB 3.6 adds the :query:`$jsonSchema` operator to support
:doc:`document validation </core/schema-validation>` using JSON
Schema. For details, see :query:`$jsonSchema`.
To use :query:`$jsonSchema`, ``featureCompatibilityVersion`` must be
set to "3.6".
.. seealso:: :ref:`3.6-compatibility-enabled`
Replica Sets
------------
- Deprecate replica set protocol version 0 (``pv0``). For more
information on the replica set protocol versions, see
:doc:`/reference/replica-set-protocol-versions`.
- Added the :dbcommand:`replSetResizeOplog` command to dynamically
resize a replica set member's oplog. Available for instances running
the WiredTiger storage engine.
- Added the
:ref:`catchUpTakeoverDelayMillis <repl-conf-catchup-takeover-delay>`
configuration option, dictating the amount of time a node waits to
run for election after determining that it is ahead of the current
:term:`primary`.
- For replica sets that use the protocol version 1 (``pv1``), arbiters
will vote no in elections if they detect a healthy primary of equal
or greater priority to the candidate. For more information on replica
set protocol versions, see
:doc:`/reference/replica-set-protocol-versions`.
- Added the :parameter:`oplogInitialFindMaxSeconds` parameter to adjust
how long a member of a :term:`replica set` should wait for its
:dbcommand:`find` command to finish during :ref:`data synchronization
<replica-set-sync>`.
- Added the :parameter:`waitForSecondaryBeforeNoopWriteMS` parameter to
specify how long a secondary must wait if the ``afterClusterTime`` is
greater than the last applied time from the oplog.
- Added support for running the following during a replica set member's
:term:`initial sync`:
- :dbcommand:`renameCollection`
- :dbcommand:`convertToCapped`
- :pipeline:`$out` stages in aggregation pipelines
- :term:`Map-reduce <map-reduce>` jobs that output to a new collection
Sharded Clusters
----------------
- Starting in 3.6, shards must be replica sets. To upgrade your sharded
cluster to version 3.6, the shard servers must be running as a
replica set.
To convert an existing shard standalone instance to a shard replica
set, see :doc:`/tutorial/convert-shard-standalone-to-shard-replica-set`.
- Starting in 3.6, all members of a shard replica set, not just the
primary, maintain the metadata regarding chunk metadata. This
prevents reads from the secondaries from returning :term:`orphaned
data <orphaned document>` when not using :readconcern:`"available"`
read concern.
- Added :parameter:`ShardingTaskExecutorPoolMaxConnecting` parameter
for :binary:`~bin.mongos` to control the rate at which :binary:`~bin.mongos`
adds connections to a :binary:`~bin.mongod` instance.
- Added :parameter:`orphanCleanupDelaySecs` that determines the minimum
delay before a migrated chunk is deleted from the source shard.
- The ``config.system.sessions`` collection in the ``config`` database
may now be sharded.
General Enhancements
--------------------
MongoDB Compass Packaging
~~~~~~~~~~~~~~~~~~~~~~~~~
The MongoDB Server download is packaged with a platform-specific
:doc:`installation script </reference/program/install_compass>` for
:ref:`MongoDB Compass Community Edition <compass-index>`. This
script installs MongoDB Compass as part of the MongoDB Server
installation process.
Collection Identifier
~~~~~~~~~~~~~~~~~~~~~
Collections have an immutable :ref:`unique identifier
<collections-uuids>`. The ``featureCompatibilityVersion`` must be set
to ``"3.6"``.
.. seealso:: :ref:`3.6-compatibility-enabled`
New Query Operators
~~~~~~~~~~~~~~~~~~~
MongoDB 3.6 adds the following new query operators:
- The new :query:`$jsonSchema` operator matches documents that validate
against the given JSON Schema. To use :query:`$jsonSchema`,
``featureCompatibilityVersion`` must be set to "3.6".
- The :query:`$expr` allows the use of aggregation expressions within
the query language.
.. seealso::
:ref:`3.6-compatibility-enabled`
Removed Operators
~~~~~~~~~~~~~~~~~
MongoDB 3.6 removes the deprecated ``$pushAll`` update operator. For more
information, see :ref:`3.6-pushall-compatibility`.
Indexes
~~~~~~~
- An index can cover a query on fields within nested documents.
- Multikey indexes can cover queries over non-array keys if the index
tracks which fields make it multikey.
- When creating an index, you cannot specify ``*`` as the name of the
index. See :ref:`3.6-index-asterisk`.
Commands
~~~~~~~~
- Added the following options to the :dbcommand:`listDatabases` command:
- ``nameOnly`` to return only the database names (which
does not require database locks) instead of returning both the
database names and size information (which does require database
locks).
- ``filter`` to return databases that match the
specified match criteria on the outputs.
- Modified behavior of the :dbcommand:`validate` command and the
:method:`db.collection.validate()` method such that only for ``full``
validation does the WiredTiger storage engine force a checkpoint,
flush all in-memory data to disk, then verify the on-disk data. See
also :ref:`3.6-validate-compatibility`.
- The ``<database>.system.profile`` entry for :dbcommand:`update` and
:dbcommand:`delete` contains the entire update/delete document applied
to the named collection.
- :dbcommand:`dropDatabase` waits until all collections drops in the
database have propagated to a majority of the replica set members.
- For commands run on replica sets and sharded clusters, the response
documents include the ``operationTime`` and ``$clusterTime``. See
:method:`db.runCommand` and :method:`db.adminCommand`.
- Deprecated :dbcommand:`getPrevError` command.
Wire Protocol and Compression
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- MongoDB 3.6 introduces a new :doc:`wire protocol
</reference/mongodb-wire-protocol>` opcode called :ref:`wire-op-msg`.
This opcode's message format is extensible and designed to subsume
the functionality of other opcodes.
- MongoDB 3.6 adds support for the ``zlib`` compressor for
``--networkMessageCompressors`` option (or
:setting:`net.compression.compressors` setting if using the
configuration file). ``--networkMessageCompressors`` option (or
:setting:`net.compression.compressors` setting) enables network
compression for communication among :binary:`~bin.mongod`,
:binary:`~bin.mongos`, :binary:`~bin.mongo` shell, and drivers that
support the ``OP_COMPRESSED`` message format.
- :binary:`~bin.mongod` and :binary:`~bin.mongos` enable network
compression by default with ``snappy`` as the compressor. For more
information on network compression, see
:setting:`net.compression.compressors`.
Read Concern
~~~~~~~~~~~~
- New :readconcern:`"available"` read concern is available. For
unsharded collections (including collections in a standalone
deployment or a replica set deployment), :readconcern:`"local"` and
:readconcern:`"available"` read concerns behave identically. For
sharded clusters, :readconcern:`"available"` provides greater
tolerance for partitions but may return orphan documents if the shard
is undergoing chunk migrations.
.. seealso:: :parameter:`orphanCleanupDelaySecs`
- Starting in MongoDB 3.6, MongoDB enables support for
:v3.6:`"majority" </reference/read-concern-majority>` read concern by
default.
For MongoDB 3.6.1 - 3.6.x, you can disable read concern
:v3.6:`"majority" </reference/read-concern-majority>` to prevent the
storage cache pressure from immobilizing a deployment with a
primary-secondary-arbiter (PSA) architecture. Disabling
:v3.6:`"majority" </reference/read-concern-majority>` read concern
also disables support for :v3.6:`change streams </changeStreams>`
For more information, see :v3.6:`Disable Read Concern Majority
</reference/read-concern-majority/#disable-read-concern-majority>`.
FTDC
~~~~
MongoDB 3.6 adds support for Diagnostics Capture (also known as ``FTDC``) in
:binary:`~bin.mongos`. [#3.4]_ In previous versions, the feature is available for
:binary:`~bin.mongod` only. See :ref:`param-ftdc`.
.. note:: FTDC is enabled by default.
.. [#3.4]
MongoDB 3.4.14+ also adds :binary:`~bin.mongos` support for FTDC.
Additional Enhancements
~~~~~~~~~~~~~~~~~~~~~~~
MongoDB 3.6 includes the following enhancements:
- Added support for specifying full Unix domain socket paths with
``--bind_ip``.
- :binary:`~bin.mongod` now offers a :option:`--timeZoneInfo <mongod --timeZoneInfo>` option. Use this
option to specify the path to your system time zone database. The default
configuration file included with Linux and macOS packages sets this to
``/usr/share/zoneinfo``.
- Date operations now accept consistent date ranges across all supported
operating systems. You may safely work with years in the range ``0``
through ``9999``.
- The new :parameter:`honorSystemUmask` startup option for
:binary:`~bin.mongod` causes new files created by MongoDB to have
the read/write permissions specified by the `umask
<https://en.wikipedia.org/wiki/Umask>`_ of the user who runs the
:binary:`~bin.mongod` process. Only available on Linux and macOS systems.
- The :limit:`maxWriteBatchSize <Write Command Batch Limit Size>` limit
of a database, which indicates the maximum number of write operations
permitted in a write batch, raises from ``1,000`` to ``100,000``.
- The :dbcommand:`planCacheListPlans` database command produces the same
output as the :method:`PlanCache.getPlansByQuery()` shell method. The
output from both operations now includes a timestamp for when
the plans were generated.
- The new :parameter:`KeysRotationIntervalSec` server parameter
specifies the number of seconds for which an `HMAC signing key
<https://en.wikipedia.org/wiki/Hash-based_message_authentication_code>`_
is valid before rotating to the next one.
- The :dbcommand:`find` command's option ``oplogReplay`` now
supports the :expression:`$eq` operator.
Changes Affecting Compatibility
-------------------------------
Some changes can affect compatibility and may require user actions. For
a detailed list of compatibility changes, see
:doc:`/release-notes/3.6-compatibility`.
.. _3.6-upgrade:
Upgrade Procedures
------------------
.. admonition:: Feature Compatibility Version 3.4
To upgrade, the 3.4 instances must have
``featureCompatibilityVersion`` set to 3.4. To check the version:
.. code-block:: javascript
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
For specific details on verifying and setting the
``featureCompatibilityVersion`` as well as information on other
prerequisites/considerations for upgrades, refer to the individual
upgrade instructions:
- :doc:`/release-notes/3.6-upgrade-standalone`
- :doc:`/release-notes/3.6-upgrade-replica-set`
- :doc:`/release-notes/3.6-upgrade-sharded-cluster`
If you need guidance on upgrading to 3.6, `MongoDB offers major version
upgrade services
<https://www.mongodb.com/products/consulting?jmp=docs>`_
to help ensure a smooth transition without interruption to your MongoDB application.
Download
--------
To download the MongoDB 3.6, go to the `MongoDB
Download Center
<https://www.mongodb.com/download-center?jmp=docs#production>`_
.. seealso::
- `All Third Party License Notices <https://github.com/mongodb/mongo/blob/v3.6/distsrc/THIRD-PARTY-NOTICES>`_.
.. _3.6.3-known-issues:
Known Issues in 3.6.3
---------------------
- :issue:`WT-3724`:
.. include:: /includes/3.6-osx-platform.rst
- Operations that build in-memory structures are not causally
consistent; however, only some operations return errors when
associated with causally consistent sessions. See :ref:`Causal
Consistency Limitations <causal-consistency-limitations>`.
.. _3.6.2-known-issues:
Known Issues in 3.6.2
---------------------
- :issue:`SERVER-31760`:
:query:`$expr` does not use indexes for equality match against
field, including when used as part of a :pipeline:`$lookup`
aggregation stage with foreign pipeline.
- :issue:`WT-3724`:
.. include:: /includes/3.6-osx-platform.rst
- Operations that build in-memory structures are not causally
consistent; however, only some operations return errors when
associated with causally consistent sessions. See :ref:`Causal
Consistency Limitations <causal-consistency-limitations>`.
.. _3.6.1-known-issues:
Known Issues in 3.6.1
---------------------
- :issue:`SERVER-31760`:
:query:`$expr` does not use indexes for equality match against
field, including when used as part of a :pipeline:`$lookup`
aggregation stage with foreign pipeline.
- :issue:`WT-3724`:
.. include:: /includes/3.6-osx-platform.rst
- Operations that build in-memory structures are not causally
consistent; however, only some operations return errors when
associated with causally consistent sessions. See :ref:`Causal
Consistency Limitations <causal-consistency-limitations>`.
.. _3.6-known-issues:
Known Issues in 3.6.0
---------------------
- :issue:`SERVER-31760`:
:query:`$expr` does not use indexes for equality match against
field, including when used as part of a :pipeline:`$lookup`
aggregation stage with foreign pipeline.
- :issue:`TOOLS-1827`:
When using a URI with SRV, fetched TXT records will be ignored if
no query parameters are specified in the command line URI. To get
around this, explicitly specify the TLS/SSL setting used to
communicate with the database (either ssl=true or ssl=false) in
the URI query string.
- :issue:`WT-3724`:
.. include:: /includes/3.6-osx-platform.rst
- Operations that build in-memory structures are not causally
consistent; however, only some operations return errors when
associated with causally consistent sessions. See :ref:`Causal
Consistency Limitations <causal-consistency-limitations>`.
.. seealso::
`All JIRA issues resolved in 3.6 <http://bit.ly/2jJFa85>`_.
Report an Issue
---------------
To report an issue, see
https://github.com/mongodb/mongo/wiki/Submit-Bug-Reports for
instructions on how to file a JIRA ticket for the MongoDB server or one
of the related projects.
.. class:: hidden
.. toctree::
/release-notes/3.6-changelog
/release-notes/3.6-compatibility
/release-notes/3.6-upgrade-standalone
/release-notes/3.6-upgrade-replica-set
/release-notes/3.6-upgrade-sharded-cluster
/release-notes/3.6-downgrade-standalone
/release-notes/3.6-downgrade-replica-set
/release-notes/3.6-downgrade-sharded-cluster
You can’t perform that action at this time.