Skip to content

Commit a051d2b

Browse files
authored
PYTHON-2850 [v3.13] Deprecate mapReduce command (#861)
1 parent 2a5adcf commit a051d2b

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

pymongo/collection.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3059,6 +3059,8 @@ def _map_reduce(self, map, reduce, out, session, read_pref, **kwargs):
30593059
def map_reduce(self, map, reduce, out, full_response=False, session=None, **kwargs):
30603060
"""Perform a map/reduce operation on this collection.
30613061
3062+
**DEPRECATED** - Use :meth:`aggregate` instead.
3063+
30623064
If `full_response` is ``False`` (default) returns a
30633065
:class:`~pymongo.collection.Collection` instance containing
30643066
the results of the operation. Otherwise, returns the full
@@ -3100,6 +3102,15 @@ def map_reduce(self, map, reduce, out, full_response=False, session=None, **kwar
31003102
31013103
.. seealso:: :doc:`/examples/aggregation`
31023104
3105+
.. versionchanged:: 3.13
3106+
Support for this function is deprecated in
3107+
MongoDB 4.0, and it is removed in PyMongo 4.0. Migrate to
3108+
:meth:`aggregate`. For more guidance on this migration see:
3109+
3110+
- https://docs.mongodb.com/manual/reference/map-reduce-to-aggregation-pipeline/
3111+
- https://docs.mongodb.com/manual/reference/aggregation-commands-comparison/
3112+
3113+
.. _mapReduce command: https://docs.mongodb.com/manual/reference/command/mapReduce/
31033114
.. versionchanged:: 3.4
31043115
Added the `collation` option.
31053116
.. versionchanged:: 2.2
@@ -3110,6 +3121,11 @@ def map_reduce(self, map, reduce, out, full_response=False, session=None, **kwar
31103121
.. seealso:: The MongoDB documentation on `mapreduce <https://dochub.mongodb.org/core/mapreduce>`_.
31113122
31123123
"""
3124+
warnings.warn(
3125+
'map_reduce is deprecated, use aggregate instead',
3126+
DeprecationWarning,
3127+
stacklevel=2
3128+
)
31133129
if not isinstance(out, (string_type, abc.Mapping)):
31143130
raise TypeError(
31153131
"'out' must be an instance of " "%s or a mapping" % (string_type.__name__,)
@@ -3129,6 +3145,8 @@ def map_reduce(self, map, reduce, out, full_response=False, session=None, **kwar
31293145
def inline_map_reduce(self, map, reduce, full_response=False, session=None, **kwargs):
31303146
"""Perform an inline map/reduce operation on this collection.
31313147
3148+
**DEPRECATED** - Use :meth:`aggregate` instead.
3149+
31323150
Perform the map/reduce operation on the server in RAM. A result
31333151
collection is not created. The result set is returned as a list
31343152
of documents.
@@ -3152,12 +3170,26 @@ def inline_map_reduce(self, map, reduce, full_response=False, session=None, **kw
31523170
helper method, e.g.::
31533171
31543172
>>> db.test.inline_map_reduce(map, reduce, limit=2)
3173+
.. versionchanged:: 3.13
3174+
Support for this function is deprecated in
3175+
MongoDB 4.0, and is removed in PyMongo 4.0. Migrate to
3176+
:meth:`aggregate`. For more guidance on this migration see:
3177+
3178+
- https://docs.mongodb.com/manual/reference/map-reduce-to-aggregation-pipeline/
3179+
- https://docs.mongodb.com/manual/reference/aggregation-commands-comparison/
31553180
3181+
.. _mapReduce command: https://docs.mongodb.com/manual/reference/command/mapReduce/
31563182
.. versionchanged:: 3.6
31573183
Added ``session`` parameter.
31583184
.. versionchanged:: 3.4
31593185
Added the `collation` option.
31603186
"""
3187+
warnings.warn(
3188+
'inline_map_reduce is deprecated, use aggregate instead',
3189+
DeprecationWarning,
3190+
stacklevel=2
3191+
)
3192+
31613193
res = self._map_reduce(map, reduce, {"inline": 1}, session, self.read_preference, **kwargs)
31623194

31633195
if full_response:

0 commit comments

Comments
 (0)