Skip to content

Commit 29532a5

Browse files
authored
Merge branch 'master' into DOCSP-37545-atlas-search
2 parents f804519 + fc4211c commit 29532a5

File tree

138 files changed

+9824
-4542
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

138 files changed

+9824
-4542
lines changed

config/redirects

Lines changed: 162 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,171 @@ raw: ${prefix}/ -> ${base}/current/
88
raw: ${prefix}/stable -> ${base}/current/
99
raw: ${prefix}/master -> ${base}/upcoming/
1010

11-
# temporary redirect for a bad link
11+
# temp redirects until DOP deletes unversioned URLs
1212
raw: ${prefix}/get-started/download-and-install/ -> ${base}/current/get-started/download-and-install/
13+
raw: ${prefix}/compatibility/ -> ${base}/current/compatibility/
14+
raw: ${prefix}/security/enterprise-authentication/ -> ${base}/current/security/authentication/
15+
raw: ${prefix}/faq/ -> ${base}/current/
16+
raw: ${prefix}/connect/connection-pools/ -> ${base}/current/connect/connection-options/#connection-pools
17+
raw: ${prefix}/get-started/download-and-install/ -> ${base}/current/get-started/
18+
raw: ${prefix}/get-started/create-a-deployment/ -> ${base}/current/get-started/
19+
raw: ${prefix}/get-started/create-a-connection-string/ -> ${base}/current/get-started/
20+
raw: ${prefix}/get-started/connect-to-mongodb/ -> ${base}/current/get-started/
21+
raw: ${prefix}/get-started/next-steps/ -> ${base}/current/get-started/
22+
raw: ${prefix}/connect/csot/ -> ${base}/current/connect/connection-options/csot/
23+
raw: ${prefix}/connect/network-compression/ -> ${base}/current/connect/connection-options/network-compression/
24+
raw: ${prefix}/connect/server-selection/ -> ${base}/current/connect/connection-options/server-selection/
25+
raw: ${prefix}/connect/stable-api/ -> ${base}/current/connect/connection-options/stable-api/
26+
raw: ${prefix}/connect/connection-options/csot/ -> ${base}/current/connect/connection-options/csot/
27+
raw: ${prefix}/connect/connection-options/network-compression/ -> ${base}/current/connect/connection-options/network-compression/
28+
raw: ${prefix}/connect/connection-options/server-selection/ -> ${base}/current/connect/connection-options/server-selection/
29+
raw: ${prefix}/connect/connection-options/stable-api/ -> ${base}/current/connect/connection-options/stable-api/
30+
raw: ${prefix}/connect/connection-options/connection-pools/ -> ${base}/current/connect/connection-options/connection-pools/
31+
raw: ${prefix}/connect/tls/ -> ${base}/current/security/tls/
32+
raw: ${prefix}/crud/ -> ${base}/current/crud/
33+
raw: ${prefix}/crud/insert/ -> ${base}/current/crud/insert/
34+
raw: ${prefix}/crud/query/ -> ${base}/current/crud/query/
35+
raw: ${prefix}/crud/query/specify-query/ -> ${base}/current/crud/query/specify-query/
36+
raw: ${prefix}/crud/query/find/ -> ${base}/current/crud/query/find/
37+
raw: ${prefix}/crud/query/specify-documents-to-return/ -> ${base}/current/crud/query/specify-documents-to-return/
38+
raw: ${prefix}/crud/query/project/ -> ${base}/current/crud/query/project/
39+
raw: ${prefix}/crud/query/count/ -> ${base}/current/crud/query/count/
40+
raw: ${prefix}/crud/query/distinct/ -> ${base}/current/crud/query/distinct/
41+
raw: ${prefix}/crud/query/cursors/ -> ${base}/current/crud/query/cursors/
42+
raw: ${prefix}/crud/update/ -> ${base}/current/crud/update/
43+
raw: ${prefix}/crud/delete/ -> ${base}/current/crud/delete/
44+
raw: ${prefix}/crud/bulk-write/ -> ${base}/current/crud/bulk-write/
45+
raw: ${prefix}/crud/transactions/ -> ${base}/current/crud/transactions/
46+
raw: ${prefix}/crud/gridfs/ -> ${base}/current/crud/gridfs/
47+
raw: ${prefix}/crud/configure/ -> ${base}/current/crud/configure/
48+
raw: ${prefix}/run-command/ -> ${base}/current/run-command/
49+
raw: ${prefix}/security/tls/ -> ${base}/current/security/tls/
50+
raw: ${prefix}/integrations/ -> ${base}/current/integrations/
1351

52+
raw: ${prefix}/write/bulk-write/ -> ${base}/current/crud/bulk-write/
53+
raw: ${prefix}/databases-collections/#configure-read-and-write-operations/ -> ${base}/current/crud/configure/
54+
raw: ${prefix}/write/delete/ -> ${base}/current/crud/delete/
55+
raw: ${prefix}/write/gridfs/ -> ${base}/current/crud/gridfs/
56+
raw: ${prefix}/write/insert/ -> ${base}/current/crud/insert/
57+
raw: ${prefix}/write/transactions/ -> ${base}/current/crud/transactions/
58+
raw: ${prefix}/write/update/ -> ${base}/current/crud/update/
59+
raw: ${prefix}/write/replace/ -> ${base}/current/crud/update/replace/
60+
raw: ${prefix}/read/ -> ${base}/current/crud/query/
61+
raw: ${prefix}/read/count/ -> ${base}/current/crud/query/count/
62+
raw: ${prefix}/read/cursors/ -> ${base}/current/crud/query/cursors/
63+
raw: ${prefix}/read/distinct/ -> ${base}/current/crud/query/distinct/
64+
raw: ${prefix}/read/retrieve/ -> ${base}/current/crud/query/find/
65+
raw: ${prefix}/read/project/ -> ${base}/current/crud/query/project/
66+
raw: ${prefix}/read/specify-documents-to-return/ -> ${base}/current/crud/query/specify-documents-to-return/
67+
raw: ${prefix}/read/specify-a-query/ -> ${base}/current/crud/query/specify-query/
68+
raw: ${prefix}/read/change-streams/ -> ${base}/current/monitoring-and-logging/change-streams/
69+
raw: ${prefix}/logging/ -> ${base}/current/monitoring-and-logging/logging/
70+
raw: ${prefix}/monitoring/ -> ${base}/current/monitoring-and-logging/monitoring/
71+
raw: ${prefix}/data-formats/custom-types/ -> ${base}/current/data-formats/custom-types/type-codecs/
72+
raw: ${prefix}/data-formats/custom-types/serialization/ -> ${base}/current/data-formats/custom-types/serialization/
73+
raw: ${prefix}/data-formats/custom-types/type-codecs/ -> ${base}/current/data-formats/custom-types/type-codecs/
74+
raw: ${prefix}/data-formats/bson/ -> ${base}/current/data-formats/bson/
75+
raw: ${prefix}/data-formats/extended-json/ -> ${base}/current/data-formats/extended-json/
76+
raw: ${prefix}/data-formats/dates-and-times/ -> ${base}/current/data-formats/dates-and-times/
77+
raw: ${prefix}/data-formats/time-series/ -> ${base}/current/data-formats/time-series/
78+
raw: ${prefix}/data-formats/custom-types/ -> ${base}/current/data-formats/custom-types/type-codecs/
79+
raw: ${prefix}/serialization/#binary-data -> ${base}/current/reference/compatibility/
80+
raw: ${prefix}/compatibility/ -> ${base}/current/reference/compatibility/
81+
raw: ${prefix}/motor-async-migration/ -> ${base}/current/reference/migration/
82+
raw: ${prefix}/pymongo-to-async-guide/ -> ${base}/current/reference/migration/
83+
raw: ${prefix}/previous-versions/ -> ${base}/current/reference/previous-versions/
84+
raw: ${prefix}/whats-new/ -> ${base}/current/reference/release-notes/
85+
raw: ${prefix}/reference/release-notes/ -> ${base}/current/reference/release-notes/
86+
raw: ${prefix}/reference/compatibility/ -> ${base}/current/reference/compatibility/
87+
raw: ${prefix}/reference/upgrade/ -> ${base}/current/reference/upgrade/
88+
raw: ${prefix}/reference/migration/ -> ${base}/current/reference/migration/
89+
raw: ${prefix}/reference/previous-versions/ -> ${base}/current/reference/previous-versions/
90+
raw: ${prefix}/tools/ -> ${base}/current/integrations/
91+
raw: ${prefix}/upgrade/ -> ${base}/current/reference/upgrade/
92+
raw: ${prefix}/write-operations/ -> ${base}/current/crud/
93+
raw: ${prefix}/get-started/connect-to-mongodb -> ${base}/current/get-started/run-sample-query/
94+
raw: ${prefix}/work-with-indexes/ -> ${base}/current/indexes/
95+
raw: ${prefix}/indexes/single-field-index/ -> ${base}/current/indexes/
96+
raw: ${prefix}/indexes/compound-index/ -> ${base}/current/indexes/
97+
raw: ${prefix}/indexes/multikey-index/ -> ${base}/current/indexes/
98+
raw: ${prefix}/indexes/atlas-search-index/ -> ${base}/current/indexes/
99+
raw: ${prefix}/indexes/text-index/ -> ${base}/current/indexes/
100+
raw: ${prefix}/indexes/geospatial-index/ -> ${base}/current/indexes/
101+
raw: ${prefix}/indexes/unique-index/ -> ${base}/current/indexes/
102+
raw: ${prefix}/indexes/wildcard-index/ -> ${base}/current/indexes/
103+
raw: ${prefix}/indexes/clustered-index/ -> ${base}/current/indexes/
104+
raw: ${prefix}/aggregation/filtered-subset/ -> ${base}/current/aggregation/filtered-subset/
105+
raw: ${prefix}/aggregation/group-total/ -> ${base}/current/aggregation/group-total/
106+
raw: ${prefix}/aggregation/multi-field-join/ -> ${base}/current/aggregation/multi-field-join/
107+
raw: ${prefix}/aggregation/one-to-one-join/ -> ${base}/current/aggregation/one-to-one-join/
108+
raw: ${prefix}/aggregation/unpack-arrays/ -> ${base}/current/aggregation/unpack-arrays/
109+
raw: ${prefix}/security/authentication/scram/ -> ${base}/current/security/authentication/scram/
110+
raw: ${prefix}/security/authentication/x509/ -> ${base}/current/security/authentication/x509/
111+
raw: ${prefix}/security/authentication/aws-iam/ -> ${base}/current/security/authentication/aws-iam/
112+
raw: ${prefix}/security/authentication/oidc/ -> ${base}/current/security/authentication/oidc/
113+
raw: ${prefix}/security/authentication/ldap/ -> ${base}/current/security/authentication/ldap/
114+
raw: ${prefix}/security/authentication/kerberos/ -> ${base}/current/security/authentication/kerberos/
115+
116+
# TOC reorganization
14117
[*-master]: ${prefix}/${version}/security/enterprise-authentication/ -> ${base}/${version}/security/authentication/
15118
[*-master]: ${prefix}/${version}/faq/ -> ${base}/${version}/
16119
[*-master]: ${prefix}/${version}/connect/connection-pools/ -> ${base}/${version}/connect/connection-options/#connection-pools
17-
[v4.7-*]: ${prefix}/${version}/get-started/connect-to-mongodb -> ${base}/${version}/get-started/run-sample-query/
120+
[*-master]: ${prefix}/${version}/get-started/download-and-install/ -> ${base}/${version}/get-started/
121+
[*-master]: ${prefix}/${version}/get-started/create-a-deployment/ -> ${base}/${version}/get-started/
122+
[*-master]: ${prefix}/${version}/get-started/create-a-connection-string/ -> ${base}/${version}/get-started/
123+
[*-master]: ${prefix}/${version}/get-started/connect-to-mongodb/ -> ${base}/${version}/get-started/
124+
[*-master]: ${prefix}/${version}/get-started/next-steps/ -> ${base}/${version}/get-started/
125+
[*-master]: ${prefix}/${version}/connect/csot/ -> ${base}/${version}/connect/connection-options/csot/
126+
[*-master]: ${prefix}/${version}/connect/network-compression/ -> ${base}/${version}/connect/connection-options/network-compression/
127+
[*-master]: ${prefix}/${version}/connect/server-selection/ -> ${base}/${version}/connect/connection-options/server-selection/
128+
[*-master]: ${prefix}/${version}/connect/stable-api/ -> ${base}/${version}/connect/connection-options/stable-api/
129+
[*-master]: ${prefix}/${version}/connect/tls/ -> ${base}/${version}/security/tls/
130+
[*-master]: ${prefix}/${version}/write/bulk-write/ -> ${base}/${version}/crud/bulk-write/
131+
[*-master]: ${prefix}/${version}/databases-collections/#configure-read-and-write-operations/ -> ${base}/${version}/crud/configure/
132+
[*-master]: ${prefix}/${version}/write/delete/ -> ${base}/${version}/crud/delete/
133+
[*-master]: ${prefix}/${version}/write/gridfs/ -> ${base}/${version}/crud/gridfs/
134+
[*-master]: ${prefix}/${version}/write/insert/ -> ${base}/${version}/crud/insert/
135+
[*-master]: ${prefix}/${version}/write/transactions/ -> ${base}/${version}/crud/transactions/
136+
[*-master]: ${prefix}/${version}/write/update/ -> ${base}/${version}/crud/update/
137+
[*-master]: ${prefix}/${version}/write/replace/ -> ${base}/${version}/crud/update/replace/
138+
[*-master]: ${prefix}/${version}/read/ -> ${base}/${version}/crud/query/
139+
[*-master]: ${prefix}/${version}/read/count/ -> ${base}/${version}/crud/query/count/
140+
[*-master]: ${prefix}/${version}/read/cursors/ -> ${base}/${version}/crud/query/cursors/
141+
[*-master]: ${prefix}/${version}/read/distinct/ -> ${base}/${version}/crud/query/distinct/
142+
[*-master]: ${prefix}/${version}/read/retrieve/ -> ${base}/${version}/crud/query/find/
143+
[*-master]: ${prefix}/${version}/read/project/ -> ${base}/${version}/crud/query/project/
144+
[*-master]: ${prefix}/${version}/read/specify-documents-to-return/ -> ${base}/${version}/crud/query/specify-documents-to-return/
145+
[*-master]: ${prefix}/${version}/read/specify-a-query/ -> ${base}/${version}/crud/query/specify-query/
146+
[*-master]: ${prefix}/${version}/read/change-streams/ -> ${base}/${version}/monitoring-and-logging/change-streams/
147+
[*-master]: ${prefix}/${version}/logging/ -> ${base}/${version}/monitoring-and-logging/logging/
148+
[*-master]: ${prefix}/${version}/monitoring/ -> ${base}/${version}/monitoring-and-logging/monitoring/
149+
[*-master]: ${prefix}/${version}/data-formats/custom-types/ -> ${base}/${version}/data-formats/custom-types/type-codecs/
150+
[*-master]: ${prefix}/${version}/serialization/#binary-data -> ${base}/${version}/reference/compatibility/
151+
[*-master]: ${prefix}/${version}/compatibility/ -> ${base}/${version}/reference/compatibility/
152+
[*-master]: ${prefix}/${version}/motor-async-migration/ -> ${base}/${version}/reference/migration/
153+
[*-master]: ${prefix}/${version}/pymongo-to-async-guide/ -> ${base}/${version}/reference/migration/
154+
[*-master]: ${prefix}/${version}/previous-versions/ -> ${base}/${version}/reference/previous-versions/
155+
[*-master]: ${prefix}/${version}/whats-new/ -> ${base}/${version}/reference/release-notes/
156+
[*-master]: ${prefix}/${version}/tools/ -> ${base}/${version}/integrations/
157+
[*-master]: ${prefix}/${version}/upgrade/ -> ${base}/${version}/reference/upgrade/
158+
[*-master]: ${prefix}/${version}/write-operations/ -> ${base}/${version}/crud/
159+
[*-master]: ${prefix}/${version}/get-started/connect-to-mongodb -> ${base}/${version}/get-started/run-sample-query/
160+
[*-master]: ${prefix}/${version}/work-with-indexes/ -> ${base}/${version}/indexes/
161+
162+
[*-master]: ${prefix}/${version}/indexes/single-field-index/ -> ${base}/${version}/indexes/
163+
[*-master]: ${prefix}/${version}/indexes/compound-index/ -> ${base}/${version}/indexes/
164+
[*-master]: ${prefix}/${version}/indexes/multikey-index/ -> ${base}/${version}/indexes/
165+
[*-master]: ${prefix}/${version}/indexes/atlas-search-index/ -> ${base}/${version}/indexes/
166+
[*-master]: ${prefix}/${version}/indexes/text-index/ -> ${base}/${version}/indexes/
167+
[*-master]: ${prefix}/${version}/indexes/geospatial-index/ -> ${base}/${version}/indexes/
168+
[*-master]: ${prefix}/${version}/indexes/unique-index/ -> ${base}/${version}/indexes/
169+
[*-master]: ${prefix}/${version}/indexes/wildcard-index/ -> ${base}/${version}/indexes/
170+
[*-master]: ${prefix}/${version}/indexes/clustered-index/ -> ${base}/${version}/indexes/
171+
172+
[*-master]: ${prefix}/${version}/aggregation/aggregation-tutorials/ -> ${base}/${version}/aggregation/
173+
[*-master]: ${prefix}/${version}/aggregation/aggregation-tutorials/filtered-subset/ -> ${base}/${version}/aggregation/filtered-subset/
174+
[*-master]: ${prefix}/${version}/aggregation/aggregation-tutorials/group-total/ -> ${base}/${version}/aggregation/group-total/
175+
[*-master]: ${prefix}/${version}/aggregation/aggregation-tutorials/multi-field-join/ -> ${base}/${version}/aggregation/multi-field-join/
176+
[*-master]: ${prefix}/${version}/aggregation/aggregation-tutorials/one-to-one-join/ -> ${base}/${version}/aggregation/one-to-one-join/
177+
[*-master]: ${prefix}/${version}/aggregation/aggregation-tutorials/unpack-arrays/ -> ${base}/${version}/aggregation/unpack-arrays/
18178

19-
# temp redirect until DOP deletes unversioned URLs
20-
[master]: ${prefix}/compatibility/ -> ${base}/current/compatibility/

snooty.toml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,16 @@ name = "pymongo"
22
title = "PyMongo Driver"
33
toc_landing_pages = [
44
"/get-started",
5-
"/write-operations",
6-
"/read",
75
"/connect",
8-
"/indexes",
9-
"work-with-indexes",
106
"/aggregation",
11-
"/aggregation/aggregation-tutorials",
127
"/security",
138
"/security/authentication",
14-
"/aggregation-tutorials",
159
"/data-formats",
10+
"/connect/connection-options",
11+
"crud",
12+
"/crud/query",
13+
"/crud/update",
14+
"/monitoring-and-logging"
1615
]
1716

1817
intersphinx = [

source/aggregation.txt

Lines changed: 75 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Transform Your Data with Aggregation
99
:values: reference
1010

1111
.. meta::
12-
:keywords: code example, transform, computed, pipeline
12+
:keywords: code example, transform, computed, pipeline, runnable app
1313
:description: Learn how to use {+driver-short+} to perform aggregation operations.
1414

1515
.. contents:: On this page
@@ -22,7 +22,11 @@ Transform Your Data with Aggregation
2222
:titlesonly:
2323
:maxdepth: 1
2424

25-
Tutorials </aggregation/aggregation-tutorials>
25+
Filtered Subset </aggregation/filtered-subset/>
26+
Group & Total </aggregation/group-total/>
27+
Unpack Arrays & Group </aggregation/unpack-arrays/>
28+
One-to-One Join </aggregation/one-to-one-join/>
29+
Multi-Field Join </aggregation/multi-field-join/>
2630

2731
Overview
2832
--------
@@ -103,21 +107,48 @@ of New York. To do so, it uses an aggregation pipeline with the following stages
103107
documents by the ``borough`` field, accumulating a count of documents for each distinct
104108
value.
105109

106-
.. code-block:: python
107-
:copyable: true
110+
Select the :guilabel:`Synchronous` or :guilabel:`Asynchronous` tab to see the
111+
corresponding code:
108112

109-
# Define an aggregation pipeline with a match stage and a group stage
110-
pipeline = [
111-
{ "$match": { "cuisine": "Bakery" } },
112-
{ "$group": { "_id": "$borough", "count": { "$sum": 1 } } }
113-
]
113+
.. tabs::
114+
115+
.. tab:: Synchronous
116+
:tabid: sync
117+
118+
.. code-block:: python
119+
:copyable: true
120+
121+
# Define an aggregation pipeline with a match stage and a group stage
122+
pipeline = [
123+
{ "$match": { "cuisine": "Bakery" } },
124+
{ "$group": { "_id": "$borough", "count": { "$sum": 1 } } }
125+
]
126+
127+
# Execute the aggregation
128+
aggCursor = collection.aggregate(pipeline)
129+
130+
# Print the aggregated results
131+
for document in aggCursor:
132+
print(document)
133+
134+
.. tab:: Asynchronous
135+
:tabid: async
136+
137+
.. code-block:: python
138+
:copyable: true
139+
140+
# Define an aggregation pipeline with a match stage and a group stage
141+
pipeline = [
142+
{ "$match": { "cuisine": "Bakery" } },
143+
{ "$group": { "_id": "$borough", "count": { "$sum": 1 } } }
144+
]
114145

115-
# Execute the aggregation
116-
aggCursor = collection.aggregate(pipeline)
146+
# Execute the aggregation
147+
aggCursor = await collection.aggregate(pipeline)
117148

118-
# Print the aggregated results
119-
for document in aggCursor:
120-
print(document)
149+
# Print the aggregated results
150+
async for document in aggCursor:
151+
print(document)
121152

122153
The preceding code example produces output similar to the following:
123154

@@ -254,7 +285,36 @@ Aggregation Tutorials
254285
~~~~~~~~~~~~~~~~~~~~~
255286

256287
To view step-by-step explanations of common aggregation tasks, see
257-
:ref:`pymongo-aggregation-tutorials-landing`.
288+
the following tutorials:
289+
290+
- :ref:`pymongo-aggregation-filtered-subset`
291+
- :ref:`pymongo-aggregation-group-total`
292+
- :ref:`pymongo-aggregation-arrays`
293+
- :ref:`pymongo-aggregation-one-to-one`
294+
- :ref:`pymongo-aggregation-multi-field`
295+
296+
Aggregation tutorials provide detailed explanations of common
297+
aggregation tasks in a step-by-step format. The tutorials are adapted
298+
from examples in the `Practical MongoDB Aggregations book
299+
<https://www.practical-mongodb-aggregations.com/>`__ by Paul Done.
300+
301+
Each tutorial includes the following sections:
302+
303+
- **Introduction**, which describes the purpose and common use cases of the
304+
aggregation type. This section also describes the example and desired
305+
outcome that the tutorial demonstrates.
306+
307+
- **Before You Get Started**, which describes the necessary databases,
308+
collections, and sample data that you must have before building the
309+
aggregation pipeline and performing the aggregation.
310+
311+
- **Tutorial**, which describes how to build and run the aggregation
312+
pipeline. This section describes each stage of the completed
313+
aggregation tutorial, and then explains how to run and interpret the
314+
output of the aggregation.
315+
316+
At the end of each aggregation tutorial, you can find a link to a fully
317+
runnable Python code file that you can run in your environment.
258318

259319
API Documentation
260320
~~~~~~~~~~~~~~~~~

0 commit comments

Comments
 (0)