Permalink
b17f62d Feb 15, 2017
@kay-kim @i80and @steveren @rkumar-mongo @schmalliso
855 lines (585 sloc) 26.2 KB
=============================
Release Notes for MongoDB 3.4
=============================
.. default-domain:: mongodb
.. contents:: On this page
:local:
:backlinks: none
:depth: 1
:class: twocols
.. admonition:: MongoDB 3.4 Released Nov 29, 2016
MongoDB 3.4 is now available. Key features include linearizable read
concerns, views, and collation.
OpsManager 3.4 is also available. See the `Ops Manager documentation
<http://docs.opsmanager.mongodb.com/current/>`_ and the `Ops Manager
release notes
<http://docs.opsmanager.mongodb.com/current/release-notes/application/>`_
for more information.
Minor Releases
--------------
.. class:: hidden
.. toctree::
/release-notes/3.4-changelog
.. _3.4.2-release-notes:
3.4.2 -- Feb 1, 2017
~~~~~~~~~~~~~~~~~~~~
Issues fixed:
- :issue:`SERVER-27125`: Arbiters in pv1 should vote no in elections if
they can see a healthy primary of equal or greater priority to the
candidate.
- :issue:`SERVER-27584` Add support for filter to listDatabases
- :issue:`WT-2670` Inefficient I/O when read full DB (poor readahead)
- :ref:`3.4.2-changelog`
- `All JIRA issues closed in 3.4.2
<https://jira.mongodb.org/issues/?jql=project%20in%20(SERVER%2CTOOLS%2CWT)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%273.4.2%27>`_
.. _3.4.1-release-notes:
3.4.1 -- Dec 20, 2016
~~~~~~~~~~~~~~~~~~~~~~
Issues fixed:
- :issue:`SERVER-27124`: Disallow ``readConcern: majority`` reads on
replica set protocolVersion 0 (pv0).
- :issue:`SERVER-27201`: $graphLookup triggers null pointer dereference.
- :issue:`SERVER-27207`: Find operation with a sort on a view via
``mongos`` may incorrectly return empty result set.
- :issue:`SERVER-27213`: Two ``$match`` pipeline stages can combine
incorrectly to produce incorrect results.
- :ref:`3.4.1-changelog`
- `All JIRA issues closed in 3.4.1
<https://jira.mongodb.org/issues/?jql=project%20in%20(SERVER%2CTOOLS%2CWT)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%273.4.1%27>`_
.. _3.4-rel-notes-sharded-cluster:
Sharded Cluster
---------------
Membership Awareness
~~~~~~~~~~~~~~~~~~~~
Starting in 3.4, sharded cluster components (shards, config servers,
:program:`mongos` instances) recognize their membership in a sharded
cluster, including the name of the sharded cluster, the location of the
config servers.
.. COMMENT To DOCS TEAM: Make sure we single source these things since used in relnotes and compatibility
To support this awareness:
- ``shardsvr`` Requirement
For a 3.4 sharded cluster, :program:`mongod` instances for the
shards **must** explicitly specify its role as a ``shardsvr``,
either via the configuration file setting
:setting:`sharding.clusterRole` or via the command line option
:option:`--shardsvr`.
.. note::
Default port for :program:`mongod` instances with the ``shardsvr``
role is ``27018``. To use a different port, specify
:setting:`net.port` setting or ``--port`` option.
.. COMMENT To DOCS TEAM: Ensure that in all our sharding tutorials we specify shardsvr.
- 3.4 ``mongos`` Incompatibility with Earlier Versions of ``mongod``
Version 3.4 :program:`mongos` instances cannot connect to
earlier versions of :program:`mongod` instances.
Balancer on Config Server Primary
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The balancer process has moved from the :program:`mongos` to the
primary member of the config server replica set. Associated with this
change:
- The primary of the CSRS config server holds the ``"balancer"`` lock,
using a process id named ``"ConfigServer"``, which is never released.
- MongoDB 3.4 adds:
- :dbcommand:`balancerStart` command and updates the 3.4
:program:`mongo` shell method :method:`sh.startBalancer()` to wrap
the new command. A 3.2 or earlier :program:`mongo` shell method
:method:`sh.startBalancer()` is incompatible with a 3.4 sharded
cluster.
- :dbcommand:`balancerStop` command and updates the 3.4
:program:`mongo` shell method :method:`sh.stopBalancer()` to wrap
the new command. A 3.2 or earlier :program:`mongo` shell method
:method:`sh.stopBalancer()` is incompatible with a 3.4 sharded
cluster.
- :dbcommand:`balancerStatus` command.
- MongoDB 3.4 deprecates :program:`mongo` shell method
:method:`sh.getBalancerHost()`. A 3.2 or earlier :program:`mongo`
shell method :method:`sh.getBalancerHost()` is incompatible with a
3.4 sharded cluster.
- MongoDB 3.4 removes the following configuration options from the
:program:`mongos`:
- :setting:`sharding.chunkSize` configuration file setting and
:option:`--chunkSize` command-line option
- :setting:`sharding.autoSplit` configuration file setting and
:option:`--noAutoSplit` command line option
Faster Balancing
~~~~~~~~~~~~~~~~
Starting in MongoDB 3.4:
- For :ref:`WiredTiger <storage-wiredtiger>`, the default value
``secondaryThrottle`` is ``false`` for all chunk migrations. The
balancer does not wait for replication to a secondary and instead
continues with the next document.
- MongoDB can perform parallel chunk migrations. Similar to earlier
versions, a shard can participate in at most one migration at a time.
Observing this restriction, for a sharded cluster with *n* shards,
MongoDB can perform at most *n/2* (rounded down) simultaneous chunk
migrations.
Removal of Support for SCCC Config Servers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.4 sharded clusters no longer support the use of mirrored (SCCC)
:program:`mongod` instances as config servers. The use of SCCC config
servers, deprecated in the 3.2 release, is no longer valid. Instead,
deploy your config servers as a replica set (CSRS).
To upgrade your sharded cluster to version 3.4, the config servers must
be running as a replica set.
To convert your existing config servers from SCCC to CSRS, see
:doc:`/tutorial/upgrade-config-servers-to-replica-set`.
Sharding Zones
~~~~~~~~~~~~~~
MongoDB 3.4 introduces :doc:`/core/zone-sharding`, which supersedes
tag-aware sharding available in earlier versions.
To support zones, MongoDB introduces the following commands and
:program:`mongo` shell helpers:
.. list-table::
:header-rows: 1
* - Commands
- `mongo` Shell Methods
* - :dbcommand:`addShardToZone`
- :method:`sh.addShardToZone()`
* - :dbcommand:`removeShardFromZone`
- :method:`sh.removeShardFromZone()`
* - :dbcommand:`updateZoneKeyRange`
- | :method:`sh.updateZoneKeyRange()`
| :method:`sh.removeRangeFromZone()`
.. _3.4-replica-set:
Replica Set
-----------
Default Journaling Behavior of ``majority`` Write Concern
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A new replica set configuration setting
:rsconf:`writeConcernMajorityJournalDefault` determines whether an
acknowledgement for a write concern of :writeconcern:`majority
<"majority">` returns after the majority of the voting members apply
the write in memory or to the on-disk journal *if* the :ref:`j <wc-j>`
option is unspecified in the write concern.
Adjustable Catchup Period for Newly Elected Primary
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A new replica set configuration setting
:rsconf:`settings.catchUpTimeoutMillis` defines the time limit for a
newly elected primary to catch up with the other replica set members
that may have more recent writes.
Linearizable Read Concern
~~~~~~~~~~~~~~~~~~~~~~~~~
MongoDB 3.4 introduces a read concern level of
:readconcern:`"linearizable"` to read data that reflects all successful
writes issued with a :writeconcern:`"majority"` *and* acknowledged
prior to the start of the read operation. Linearizable read concern
guarantees only apply if read operations specify a query filter that
uniquely identifies a single document.
Linearizable read concern is available for all MongoDB supported
:doc:`storage engines </core/storage-engines>`.
Combined with :writeconcern:`"majority"` write concern,
:readconcern:`"linearizable"` read concern enables multiple threads to
perform reads and writes on a single document as if a single thread
performed these operations in real time; that is, the corresponding
schedule for these reads and writes is considered linearizable.
Reads with linearizable read concern may be significantly slower than
reads with :readconcern:`"majority"` or :readconcern:`"local"` read
concerns. Always use ``maxTimeMS`` with linearizable read concern, in
case a majority of data bearing members are unavailable. For example:
.. code-block:: javascript
db.restaurants.find( { _id: 5 } ).readConcern("linearizable").maxTimeMS(10000)
db.runCommand( {
find: "restaurants",
filter: { _id: 5 },
readConcern: { level: "linearizable" },
maxTimeMS: 10000
} )
For more information on read concern, including operations that support
read concerns, see :doc:`/reference/read-concern`.
Improved Initial Sync
~~~~~~~~~~~~~~~~~~~~~
- MongoDB 3.4 improves the performance of :ref:`initial sync
<replica-set-initial-sync>` by having initial sync build the indexes
as the documents are copied.
- MongoDB 3.4 improves the :ref:`initial sync retry logic
<init-sync-retry>` to be more resilient to intermittent failures on
the network.
- Modified :ref:`rs.status() output <rs-status-output>` to report on
initial sync status and progress.
.. _3.4-decimal:
Decimal Type
------------
3.4 adds support for the `decimal128 format
<https://en.wikipedia.org/wiki/Decimal128_floating-point_format>`_ with
the new ``decimal`` data type. The decimal128 format supports numbers with
up to 34 decimal digits (i.e. significant digits) and an exponent range
of −6143 to +6144.
To support the format, the :program:`mongo` shell adds the
:ref:`NumberDecimal <shell-type-decimal>` wrapper.
.. code-block:: javascript
db.inventory.insert( {_id: 1, item: "The Scream", price: NumberDecimal("9.99"), quantity: 4 } )
When performing :ref:`comparisons <bson-types-comparison-order>` among
different numerical types, MongoDB performs comparison on the exact
stored numerical values without first converting values to a common
type.
Unlike the ``double`` data type, which only stores an approximation of
the decimal values, the ``decimal`` data type stores the exact value.
For example, a ``decimal`` ``NumberDecimal("9.99")`` has a precise
value of ``9.99`` where as a double ``9.99`` would have an approximate
value of ``9.9900000000000002131628...``.
To test for ``decimal`` type, use the :query:`$type` operator with the
literal ``"decimal"`` or ``19``.
.. code-block:: javascript
db.inventory.find( { price: { $type: "decimal" } } )
To use the new ``decimal`` data type with a MongoDB driver, an upgrade
to a driver version that supports the feature is necessary.
.. _3.4-rel-notes-aggregation-cluster:
Aggregation
-----------
New Aggregation Stage for Recursive Search
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.4 introduces a stage to the :doc:`aggregation pipeline
</core/aggregation-pipeline>` that allows for recursive search.
.. list-table::
:header-rows: 1
:widths: 20 80
* - Stage
- Description
* - :pipeline:`$graphLookup`
- Performs a recursive search on a collection. To each output
document, adds a new array field that contains the traversal
results of the recursive search for that document.
.. seealso:: `Webinar: Working with Graph Data in MongoDB <https://www.mongodb.com/presentations/webinar-working-with-graph-data-in-mongodb?jmp=docs>`_
New Aggregation Stages for Faceted Search
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Faceted search allows for the categorization of documents into
classifications. For example, given a collection of inventory
documents, you may want to classify items by a single category, such as
by the price range, or by multiple categories, such as by price range
as well as separately by the departments.
3.4 introduces stages to the :doc:`aggregation pipeline
</core/aggregation-pipeline>` that allow for faceted search.
.. list-table::
:header-rows: 1
:widths: 20 80
* - Stage
- Description
* - :pipeline:`$bucket`
- Categorizes or groups incoming documents into buckets that
represent a range of values for a specified expression.
* - :pipeline:`$bucketAuto`
- Categorizes or groups incoming documents into specified number
of buckets that represent a range of values for a specified
expression. MongoDB automatically determines the bucket
boundaries.
* - :pipeline:`$facet`
- Processes multiple :ref:`pipelines <aggregation-pipeline>` on
the input documents and outputs a document that contains the
results of these pipelines. By specifying facet-related stages
(:pipeline:`$bucket`, :pipeline:`$bucketAuto`, and
:pipeline:`$sortByCount`) in these pipelines, :pipeline:`$facet`
allows for multi-faceted search.
* - :pipeline:`$sortByCount`
- Categorizes or groups incoming documents by a specified
expression to compute the count for each group. Output documents
are sorted in descending order by the count.
New Aggregation Stages to Facilitate Reshaping Documents
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.4 introduces stages to the :doc:`aggregation pipeline
</core/aggregation-pipeline>` that faciliate replacing documents as
well as adding new fields.
.. list-table::
:header-rows: 1
:widths: 20 80
* - Stage
- Description
* - :pipeline:`$addFields`
- Adds new fields to documents. The stage outputs documents that
contains all existing fields from the input documents as well as
the newly added fields.
* - :pipeline:`$replaceRoot`
- Replaces a document with the specified document. You can specify
a document embedded in the input document to promote the
embedded document to the top level.
New Aggregation Stage to Count
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.4 introduces a new stage to the :doc:`aggregation pipeline
</core/aggregation-pipeline>` that faciliate counting document.
.. list-table::
:header-rows: 1
:widths: 20 80
* - Stage
- Description
* - :pipeline:`$count`
- Returns a document that contains a count of the number of
documents input to the stage.
New Aggregation Array Operators
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:widths: 20 80
* - Operator
- Description
* - :expression:`$in`
- Returns a boolean that indicates if a specified value is in an
array.
* - :expression:`$indexOfArray`
- Searches an array for an occurence of a specified value and
returns the array index (zero-based) of the first occurence.
* - :expression:`$range`
- Returns an array whose elements are a generated sequence of
numbers.
* - :expression:`$reverseArray`
- Returns an output array whose elements are those of the input
array but in reverse order.
* - :expression:`$reduce`
- Takes an array as input and applies an expression to each
element in the array to return the final result of the
expression.
* - :expression:`$zip`
- Returns an output array where each element is itself an array,
consisting of elements in the corresponding array index position
from the input arrays.
New Aggregation String Operators
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:widths: 20 80
* - Operator
- Description
* - :expression:`$indexOfBytes`
- Searches a string for an occurence of a substring and returns
the UTF-8 byte index (zero-based) of the first occurence.
* - :expression:`$indexOfCP`
- Searches a string for an occurence of a substring and returns
the UTF-8 `code point
<http://www.unicode.org/glossary/#code_point>`_ index
(zero-based) of the first occurence.
* - :expression:`$split`
- Splits a string by a specified delimiter into string components
and returns an array of the string components.
* - :expression:`$strLenBytes`
- Returns the number of UTF-8 bytes for a string.
* - :expression:`$strLenCP`
- Returns the number of UTF-8 `code points
<http://www.unicode.org/glossary/#code_point>`_ for a string.
* - :expression:`$substrBytes`
- Returns the substring of a string. The substring starts with the
character at the specified UTF-8 byte index (zero-based) in the
string for the length specified.
* - :expression:`$substrCP`
- Returns the substring of a string. The substring starts with the
character at the specified UTF-8 `code point
<http://www.unicode.org/glossary/#code_point>`_ index
(zero-based) in the string for the length specified.
New Aggregation Control Flow Expression
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:widths: 20 80
* - Operator
- Description
* - :expression:`$switch`
- Evaluates, in sequential order, the ``case`` expressions of the
specified branches to enter the first branch for which the
``case`` expression evaluates to ``true``.
New Date Aggregation Operators
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:widths: 20 80
* - Operator
- Description
* - :expression:`$isoDayOfWeek`
- Returns the ISO 8601 weekday number, ranging from ``1`` (for
Monday) to ``7`` (for Sunday).
* - :expression:`$isoWeek`
- Returns the ISO 8601 week number, which can range from ``1`` to
``53``. Week numbers start at ``1`` with the week (Monday
through Sunday) that contains the year's first Thursday.
* - :expression:`$isoWeekYear`
- Returns the ISO 8601 year number, where the year starts with the
Monday of week 1 (ISO 8601) and ends with the Sundays of the
last week (ISO 8601).
New Monitoring Aggregation Sources
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:widths: 20 80
* - Operator
- Description
* - :pipeline:`$collStats`
- Returns statistics regarding a collection or view.
New Type Operator
~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:widths: 26 74
* - Operator
- Description
* - :expression:`$type`
- Returns a string which specifies the
:doc:`/reference/bson-types/` of the argument.
Additional Changes
~~~~~~~~~~~~~~~~~~
:pipeline:`$project` stage adds support for field exclusion in the
output document. Previously, you could only exclude the ``_id`` field
in the stage. If you specify the exclusion of a field or fields,
- All other fields are returned in the output documents.
- You cannot specify new fields or the inclusion of other fields.
.. _3.4-relnotes-collation:
Collation and Case-Insensitive Indexes
--------------------------------------
To allow for language-specific rules for string comparison, MongoDB
3.4 introduces :doc:`collation </reference/collation>` to its query language and
indexes.
The following operations support collation:
.. include:: /includes/extracts/collation-operations-table.rst
For details, see :doc:`Collation </reference/collation>`.
.. _3.4-relnotes-views:
Views
-----
MongoDB 3.4 adds support for creating read-only views from existing
collections or other views. To specify or define a view, MongoDB 3.4
introduces:
- the ``viewOn`` and ``pipeline`` options to the existing
:dbcommand:`create` command:
.. code-block:: javascript
db.runCommand( { create: <view>, viewOn: <source>, pipeline: <pipeline> } )
or if specifying a default :ref:`collation <3.4-relnotes-collation>` for the view:
.. code-block:: javascript
db.runCommand( { create: <view>, viewOn: <source>, pipeline: <pipeline>, collation: <collation> } )
- and a corresponding :program:`mongo` shell helper
:method:`db.createView()`:
.. code-block:: javascript
db.createView(<view>, <source>, <pipeline>, <collation>)
For more information on creating views, see :ref:`3.4-reference-views`.
Security Enhancement
--------------------
Transition to Auth
~~~~~~~~~~~~~~~~~~
MongoDB 3.4 adds support for rolling transition to internal
authentication for replica sets and sharded clusters. For details, see
:setting:`security.transitionToAuth` setting and :option:`--transitionToAuth`
command line option for :program:`mongod` and:program:`mongos`.
.. seealso::
:doc:`/tutorial/enforce-keyfile-access-control-in-existing-replica-set-without-downtime`
User Roles Changes
~~~~~~~~~~~~~~~~~~
.. include:: /includes/fact-3.4-built-in-roles-changes.rst
MongoDB Tools
-------------
``mongoreplay``
~~~~~~~~~~~~~~~
MongoDB introduces :program:`mongoreplay`, a workload capture and
analysis tool that replaces :program:`mongosniff`. You can use
:program:`mongoreplay` to inspect and record commands sent to a MongoDB
instance, and then replay the commands back onto another host at a
later time.
General Enhancements
--------------------
MongoDB 3.4 includes the following enhancements:
- Added ``systemd`` support in distributions.
- Increased :parameter:`diagnosticDataCollectionDirectorySizeMB`
default size to 200 megabytes from 100 megabytes.
- Decreased the lower bound and the default setting of the
:option:`WiredTiger internal cache <--wiredTigerCacheSizeGB>`. Both
the :option:`WiredTiger Storage Engine internal cache
<--wiredTigerCacheSizeGB>` and the :option:`inMemory Storage Engine
maximum memory size <--inMemorySizeGB>` can accept floating-point values.
- :method:`~db.collection.find()`,
:method:`~db.collection.aggregate()`, :dbcommand:`listIndexes`, and
:dbcommand:`listCollections` operations return a :ref:`maximum of 16
megabytes per batch <cursor-batches>`.
- .. include:: /includes/fact-diagnostic-info.rst
- :program:`mongo` shell adds support for marshalling fields of type
:ref:`javascript<bson-types>` and
:ref:`javascriptWithScope<bson-types>` to JavaScript functions.
See :option:`--disableJavaScriptProtection`.
- Added support for system certificates. If a :program:`mongod`
instance presents a certificate signed with a CA trusted by the
operating system, the :program:`mongo` shell will connect without any
errors. Previously, the :program:`mongo` shell exited with an error
that it could not validate the certificate.
- Added message compression support for internal communication between
members of a replica set or a sharded cluster as well as
communication between :program:`mongo` shell and :program:`mongod` or
:program:`mongos`.
See configuration :setting:`net.compression.compressors` setting as
well as the ``--networkMessageCompressors`` option for
:program:`mongod`, :program:`mongos`, and the :program:`mongo` shell.
Platform Support
----------------
- MongoDB 3.4 introduces support for ARM64, PPC64LE, and s390x
architectures. See :ref:`prod-notes-supported-platforms` to see the
full platform support matrix.
- .. include:: /includes/admonition-power-ubuntu-restriction.rst
MongoDB Enterprise Features
---------------------------
Log Redaction
~~~~~~~~~~~~~
MongoDB Enterprise adds support for log redaction for use in
conjunction with MongoDB's :doc:`encrypted storage engine
</core/security-encryption-at-rest>`. Log redaction prevents
potentially sensitive information from being written to the diagnostic
log; however, diagnostics on redacted logs may be more difficult due to
the lack of data related to a log event.
To enable log redaction, see the
:setting:`security.redactClientLogData` setting and the
:option:`--redactClientLogData` option for :program:`mongod`.
LDAP Enhancements
~~~~~~~~~~~~~~~~~
LDAP Authorization
``````````````````
MongoDB Enterprise supports the use of :doc:`Lightweight Directory
Access Protocol (LDAP) service to authorize (i.e. determine access)
</core/security-ldap-external>` a user authenticated via one of the
following authentication mechanism:
- :doc:`/core/security-ldap`. For a tutorial on using both LDAP
Authentication and Authorization, see
:doc:`/tutorial/authenticate-nativeldap-activedirectory`.
- :doc:`/core/kerberos`. For a tutorial on using Kerberos
authentication and Active Directory, see
:doc:`/tutorial/kerberos-auth-activedirectory-authz`.
- :doc:`/core/security-x.509`.
For more information, see :doc:`/core/security-ldap-external`.
``mongoldap``
`````````````
MongoDB Enterprise provides a new tool :program:`mongoldap` for testing
your MongoDB :ref:`LDAP configuration options <security.ldap.options>`
against a running LDAP server or set of servers. When configuring
options related to :ref:`LDAP authentication <security-ldap>`, you can
use :program:`mongoldap` to ensure that the authentication operation
works as expected.
Bind via OS Libraries
``````````````````````
MongoDB 3.4 supports :doc:`binding to an LDAP server
</core/security-ldap>` via operating system libraries. This allows
Linux and Windows MongoDB 3.4 servers to use an LDAP server for
authentication.
Linux MongoDB deployments continue to support binding via `saslauthd
<http://www.linuxcommand.org/man_pages/saslauthd8.html>`_.
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.4-compatibility`.
.. class:: hidden
.. toctree::
/release-notes/3.4-compatibility
.. _3.4-upgrade:
Upgrade Procedures
------------------
- :doc:`/release-notes/3.4-upgrade-standalone`.
- :doc:`/release-notes/3.4-upgrade-replica-set`.
- :doc:`/release-notes/3.4-upgrade-sharded-cluster`.
If you need guidance on upgrading to 3.4, `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.
.. class:: hidden
.. toctree::
:titlesonly:
/release-notes/3.4-upgrade-standalone
/release-notes/3.4-upgrade-replica-set
/release-notes/3.4-upgrade-sharded-cluster
/release-notes/3.4-downgrade
Known Issues in 3.4.0
---------------------
List of known issues in the 3.4.0 release:
- :issue:`SERVER-27124`: :rsconf:`protocolVersion: 0 <protocolVersion>`
cannot properly support :readconcern:`"majority"` read concern.
- :issue:`SERVER-27195`: Using collation with documents containing
fields of BSON type ``Symbol``, which is deprecated, is not supported
and may lead to undefined behavior.
- :issue:`SERVER-27207`: Find on view with sort through
:program:`mongos` may incorrectly return empty result set.