

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Unterstützte MongoDB APIs, Operationen und Datentypen in Amazon DocumentDB
<a name="mongo-apis"></a>

Amazon DocumentDB (mit MongoDB-Kompatibilität) ist ein schneller, skalierbarer, hochverfügbarer und vollständig verwalteter Dokumentendatenbankservice, der MongoDB-Workloads unterstützt. Amazon DocumentDB ist mit MongoDB 3.6, 4.0, 5.0 und 8.0 kompatibel. APIs In diesem Abschnitt werden die unterstützten Funktionalitäten aufgeführt. Für Unterstützung bei der Verwendung von MongoDB APIs und Treibern wenden Sie sich bitte an die MongoDB-Community-Foren. Wenn Sie Unterstützung bei der Nutzung des Amazon DocumentDB-Services benötigen, wenden Sie sich bitte an das entsprechende AWS Support-Team. Informationen zu den Funktionsunterschieden zwischen Amazon DocumentDB und MongoDB finden Sie unter. [Funktionale Unterschiede: Amazon DocumentDB und MongoDB](functional-differences.md) 

MongoDB-Befehle und -Operatoren, die nur intern oder nicht auf einen verwalteten Service anwendbar sind, werden nicht unterstützt und sind nicht in der Liste der unterstützten Funktionalität enthalten.

Seit der Markteinführung haben wir mehr als 50 zusätzliche Funktionen hinzugefügt und werden uns weiter an den Anforderungen unserer Kunden ausrichten, um ihnen die benötigten Funktionen bereitzustellen. Informationen zu den neuesten Produkteinführungen finden Sie unter [Ankündigungen von Amazon DocumentDB](https://aws.amazon.com/documentdb/resources/).

Wenn es eine Funktion gibt, die nicht unterstützt wird und die Sie von uns erstellen lassen möchten, teilen Sie uns dies mit, indem Sie eine E-Mail mit Ihrer accountID, den angeforderten Funktionen und dem Anwendungsfall an das [Amazon DocumentDB-Serviceteam](mailto:documentdb-feature-request@amazon.com) senden.
+ [Befehle für die Datenbank](#mongo-apis-database)
+ [Abfrage- und Projektionsoperatoren](#mongo-apis-query)
+ [Operatoren aktualisieren](#mongo-apis-update)
+ [Geodaten](#mongo-apis-geospatial)
+ [Cursor-Methoden](#mongo-apis-cursor)
+ [Operatoren für Aggregationspipelines](#mongo-apis-aggregation-pipeline)
+ [Datentypen](#mongo-apis-data-types)
+ [Indizes](#mongo-apis-indexes)

## Befehle für die Datenbank
<a name="mongo-apis-database"></a>

**Topics**
+ [Administrative Befehle](#mongo-apis-dababase-administrative)
+ [Aggregation](#mongo-apis-dababase-aggregation)
+ [Authentifizierung](#mongo-apis-dababase-authentication)
+ [Diagnosebefehle](#mongo-apis-dababase-diagnostics)
+ [Abfrage- und Schreiboperationen](#mongo-apis-dababase-query-write)
+ [Befehle zur Rollenverwaltung](#mongo-apis-database-role-management)
+ [Befehle für Sessions](#mongo-apis-dababase-sessions)
+ [Benutzerverwaltung](#mongo-apis-dababase-user-management)
+ [Sharding-Befehle](#mongo-apis-dababase-sharding)

### Administrative Befehle
<a name="mongo-apis-dababase-administrative"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  Gedeckelte Sammlungen  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  cloneCollectionAsGekappt  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  collMod  |  Teilweise  |  Teilweise  |  Teilweise  |  Teilweise  |  Teilweise  | 
|  collMod: expireAfterSeconds  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  convertToCapped  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  copydb  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  Erstellen  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  createView  |  Nein  |  Nein  |  Nein  |  Ja  |  Nein  | 
|  createIndexes  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  currentOp  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  fallen lassen  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  dropDatabase  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  dropIndexes  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  filemd5  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  getAuditConfig  |  Nein  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  killCursors  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  killOp  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  listCollections auflisten\$1  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  listDatabases  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  listIndexes  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  reIndex  |  Nein  |  Nein  |  Ja  |  Ja  |  Nein  | 
|  renameCollection  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  setAuditConfig  |  Nein  |  Ja  |  Ja  |  Ja  |  Nein  | 

\$1 Der `type` Schlüssel in der Filteroption wird nicht unterstützt.

### Aggregation
<a name="mongo-apis-dababase-aggregation"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  aggregate  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  count  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  distinct  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  mapReduce  |  Nein  |  Nein  |  Nein  |  Ja  |  Nein  | 

### Authentifizierung
<a name="mongo-apis-dababase-authentication"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  authenticate  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  logout  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Diagnosebefehle
<a name="mongo-apis-dababase-diagnostics"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  buildInfo  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  collStats  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  connPoolStats  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  connectionStatus  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  dataSize  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  dbHash  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  dbStats  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  explain  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Erklären: executionStats  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  features  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  hostInfo  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  listCommands  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Profiler  |  [Ja](https://docs.aws.amazon.com//documentdb/latest/developerguide/profiling.html)  |  [Ja](https://docs.aws.amazon.com//documentdb/latest/developerguide/profiling.html)  |  [Ja](https://docs.aws.amazon.com//documentdb/latest/developerguide/profiling.html)  |  [Ja](https://docs.aws.amazon.com//documentdb/latest/developerguide/profiling.html)  |  Nein  | 
|  serverStatus  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  top  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Abfrage- und Schreiboperationen
<a name="mongo-apis-dababase-query-write"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  Change streams  |  [Ja](https://docs.aws.amazon.com//documentdb/latest/developerguide/change_streams.html)  |  [Ja](https://docs.aws.amazon.com//documentdb/latest/developerguide/change_streams.html)  |  [Ja](https://docs.aws.amazon.com//documentdb/latest/developerguide/change_streams.html)  |  [Ja](https://docs.aws.amazon.com//documentdb/latest/developerguide/change_streams.html)  |  Nein  | 
|  delete  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  find  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  findAndModify  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  getLastError  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  getMore  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  getPrevError  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  GridFS  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  insert  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  parallelCollectionScan  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  resetError  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  update  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  ReplaceOne  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Befehle zur Rollenverwaltung
<a name="mongo-apis-database-role-management"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  createRole  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  dropAllRolesFromDatabase  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  dropRole  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  grantRolesToRolle  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  revokeRolesFromRolle  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  revokePrivilegesFromRolle  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  rolesInfo  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  updateRole  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 

### Befehle für Sessions
<a name="mongo-apis-dababase-sessions"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  Transaktion abbrechen  |  Nein  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  commitTransaction  |  Nein  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  Sitzungen beenden  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|   killAllSessions  |  Nein  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  killAllSessionsByPattern  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  Sitzungen beenden  |  Nein  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  Sitzungen aktualisieren  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  Sitzung starten  |  Nein  |  Ja  |  Ja  |  Ja  |  Nein  | 

### Benutzerverwaltung
<a name="mongo-apis-dababase-user-management"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  createUser  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  dropAllUsersFromDatabase  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  dropUser  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  grantRolesToBenutzer  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  revokeRolesFromBenutzer  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  updateUser  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Benutzerinformationen  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Sharding-Befehle
<a name="mongo-apis-dababase-sharding"></a>


| Befehl | Elastischer Cluster | 
| --- | --- | 
|  abortReshardCollection  |  Nein  | 
|  Fügt Hard hinzu  |  Nein  | 
|  addShardToZone  |  Nein  | 
|  balancerCollectionStatus  |  Nein  | 
|  Balancer starten  |  Nein  | 
|  Balancer-Status  |  Nein  | 
|  Balancer Stopp  |  Nein  | 
|  checkShardingIndex  |  Nein  | 
|  clearJumboFlag  |  Nein  | 
|  cleanupOrphaned  |  Nein  | 
|  cleanupReshardCollection  |  Nein  | 
|  commitReshardCollection  |  Nein  | 
|  Sharding aktivieren  |  Ja  | 
|  flushRouterConfig  |  Nein  | 
|  getShardMap  |  Nein  | 
|  getShardVersion  |  Nein  | 
|  isdbgrid  |  Nein  | 
|  Listet Scherben auf  |  Nein  | 
|  Median-Key  |  Nein  | 
|  Chunk verschieben  |  Nein  | 
|  Primär verschieben  |  Nein  | 
|  Chunks zusammenführen  |  Nein  | 
|  refineCollectionShardSchlüssel  |  Nein  | 
|  Entfernt Hard  |  Nein  | 
|  removeShardFromZone  |  Nein  | 
|  Sammlung Reshard  |  Nein  | 
|  setAllowMigrations  |  Nein  | 
|  setShardVersion  |  Nein  | 
|  Sammlung Shard  |  Ja  | 
|  Status „Sharding“  |  Nein  | 
|  split  |  Nein  | 
|  Vektor aufteilen  |  Nein  | 
|  Harding rückgängig machen  |  Nein  | 
|  updateZoneKeyReichweite  |  Nein  | 

## Abfrage- und Projektionsoperatoren
<a name="mongo-apis-query"></a>

**Topics**
+ [Array-Operatoren](#mongo-apis-query-array-operators)
+ [Bitweise Operatoren](#mongo-apis-query-bitwise-operators)
+ [Operator kommentieren](#mongo-apis-query-comment-operator)
+ [Vergleichsoperatoren](#mongo-apis-query-comparison-operators)
+ [Elementoperatoren](#mongo-apis-query-element-operators)
+ [Operatoren für Bewertungsabfragen](#mongo-apis-query-evaluation-operators)
+ [Logische Operatoren](#mongo-apis-query-logical-operators)
+ [Projektionsoperatoren](#mongo-apis-projection-operators)

### Array-Operatoren
<a name="mongo-apis-query-array-operators"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1all](all.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1elemMatch](elemMatch.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1size](size-query.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Bitweise Operatoren
<a name="mongo-apis-query-bitwise-operators"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1bitsAllSet](bitsAllSet.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1bitsAnySet](bitsAnySet.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1bitsAllClear](bitsAllClear.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1bitsAnyClear](bitsAnyClear.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Operator kommentieren
<a name="mongo-apis-query-comment-operator"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1comment](comment.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Vergleichsoperatoren
<a name="mongo-apis-query-comparison-operators"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1eq](eq.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1gt](gt.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1gte](gte.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1in](in.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1lt](lt.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1lte](lte.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1ne](ne.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1nin](nin.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Elementoperatoren
<a name="mongo-apis-query-element-operators"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1exists](exists.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1type](type.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Operatoren für Bewertungsabfragen
<a name="mongo-apis-query-evaluation-operators"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1expr](expr.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  [\$1jsonSchema](jsonSchema.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  [\$1mod](mod-query.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1regex](regex.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1text](text.md)  |  Nein  |  Nein  |  Ja  |  Ja  |  Nein  | 
|  \$1where  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 

### Logische Operatoren
<a name="mongo-apis-query-logical-operators"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1and](and.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1nor](nor.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1not](not.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1or](or.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Projektionsoperatoren
<a name="mongo-apis-projection-operators"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1](dollar-projection.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1elemMatch](elemMatch.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1meta](meta.md)  |  Nein  |  Nein  |  Ja  |  Ja  |  Nein  | 
|  [\$1slice](slice-projection.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

## Operatoren aktualisieren
<a name="mongo-apis-update"></a>

**Topics**
+ [Array-Operatoren](#mongo-apis-update-array)
+ [Bitweise Operatoren](#mongo-apis-update-bitwise)
+ [Feldoperatoren](#mongo-apis-update-field)
+ [Modifikatoren aktualisieren](#mongo-apis-update-modifiers)

### Array-Operatoren
<a name="mongo-apis-update-array"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1](dollar-update.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1[]](dollarBrackets-update.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1[<identifier>]](dollarIdentifier-update.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1addToSet](addToSet.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1pop](pop.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1pullAll](pullAll.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1pull](pull.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1push](push.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Bitweise Operatoren
<a name="mongo-apis-update-bitwise"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1bit](bit.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Feldoperatoren
<a name="mongo-apis-update-field"></a>


| Operator | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1currentDate](currentDate.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1inc](inc.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1max](max-update.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1min](min-update.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1mul](mul.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1rename](rename.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1set](set-update.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1setOnInsert](setOnInsert.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1unset](unset-update.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Modifikatoren aktualisieren
<a name="mongo-apis-update-modifiers"></a>


| Operator | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1each](each.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1position](position.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1slice](slice-update.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1sort](sort-update.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

## Geodaten
<a name="mongo-apis-geospatial"></a>

### Geometrie-Spezifizierer
<a name="mongo-apis-geospatial-geometry-specifiers"></a>


| Abfrageauswahl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  \$1box  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  \$1center  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  \$1centerSphere  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  [\$1geometry](geometry.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1maxDistance](maxDistance.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1minDistance](minDistance.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1nearSphere](nearSphere.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  \$1polygon  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  \$1uniqueDocs  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 

### Selektoren abfragen
<a name="mongo-apis-geospatial-query-selectors"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1geoIntersects](geoIntersects.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1geoWithin](geoWithin.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1near](near.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1nearSphere](nearSphere.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  \$1polygon  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  \$1uniqueDocs  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 

## Cursor-Methoden
<a name="mongo-apis-cursor"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  cursor.batchSize()  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  cursor.close()  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  cursor.collation()  |  Nein  |  Nein  |  Nein  |  Ja  |  Nein  | 
|  cursor.comment()  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  cursor.count()  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  cursor.explain()  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  cursor.forEach()  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  cursor.hasNext()  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  cursor.hint()  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja\$1  | 
|  cursor.isClosed()  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  cursor.isExhausted()  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  cursor.itcount()  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  cursor.limit()  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  cursor.map()  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  cursor.max()  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  cursor.maxScan()  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  cursor.maxTimeMS()  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  cursor.min()  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  cursor.next()  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Cursor. noCursorTimeout()  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  Cursor. objsLeftInBatch ()  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  cursor.pretty()  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  cursor.readConcern()  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  cursor.readPref()  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  cursor.returnKey()  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  Cursor. showRecordId()  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  cursor.size()  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  cursor.skip()  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  cursor.sort()  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  cursor.tailable()  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  cursor.toArray()  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 

\$1 Index `hint` wird mit Indexausdrücken unterstützt. Beispiel, `db.foo.find().hint({x:1})`.

## Operatoren für Aggregationspipelines
<a name="mongo-apis-aggregation-pipeline"></a>

**Topics**
+ [Akkumulatorausdrücke](#mongo-apis-aggregation-pipeline-accumulator-expressions)
+ [Arithmetische Operatoren](#mongo-apis-aggregation-pipeline-arithmetic)
+ [Array-Operatoren](#mongo-apis-aggregation-pipeline-array)
+ [Boolesche Operatoren](#mongo-apis-aggregation-pipeline-boolean)
+ [Vergleichsoperatoren](#mongo-apis-aggregation-pipeline-comparison)
+ [Operatoren für bedingte Ausdrücke](#mongo-apis-aggregation-pipeline-conditional)
+ [Datentyp-Operator](#mongo-apis-aggregation-pipeline-data-type)
+ [Operator zur Datengröße](#mongo-apis-aggregation-pipeline-data-size)
+ [Datumsoperatoren](#mongo-apis-aggregation-pipeline-date)
+ [Wörtlicher Operator](#mongo-apis-aggregation-pipeline-literal)
+ [Operator zusammenführen](#mongo-apis-aggregation-pipeline-merge)
+ [Natürlicher Operator](#mongo-apis-aggregation-pipeline-natural)
+ [Satzoperatoren](#mongo-apis-aggregation-pipeline-set)
+ [Betreiber der Bühne](#mongo-apis-aggregation-pipeline-stage)
+ [Zeichenfolgenoperatoren](#mongo-apis-aggregation-pipeline-string)
+ [Systemvariablen](#mongo-apis-aggregation-pipeline-system-variables)
+ [Operator für die Textsuche](#mongo-apis-aggregation-pipeline-text-search)
+ [Geben Sie Konvertierungsoperatoren ein](#mongo-apis-aggregation-pipeline-type)
+ [Variablenoperatoren](#mongo-apis-aggregation-pipeline-variable)
+ [Verschiedene Betreiber](#mongo-apis-aggregation-pipeline-misc)

### Akkumulatorausdrücke
<a name="mongo-apis-aggregation-pipeline-accumulator-expressions"></a>


| Expression | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  \$1Akkumulator  |  -  |  -  |  Nein  |  Nein  |  Nein  | 
|  [\$1addToSet](addToSet-aggregation.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1avg](avg.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1count](count.md)  |  -  |  -  |  Nein  |  Nein  |  Nein  | 
|  \$1KovarianzPop  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  \$1KovarianzAMP  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  \$1 DenseRank  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  \$1 Ableitung  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  \$1 Nummer des Dokuments  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  \$1expMovingAvg  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  [\$1first](first.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  \$1 integral  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  [\$1last](last.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1max](max.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1min](min.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1push](push-aggregation.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  \$1 Rang  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  \$1 Schicht  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  \$1stdDevPop  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  \$1stdDevSamp  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  [\$1sum](sum.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Arithmetische Operatoren
<a name="mongo-apis-aggregation-pipeline-arithmetic"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1abs](abs.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1add](add.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1ceil](ceil.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1divide](divide.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1exp](exp.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1floor](floor.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1ln](ln.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1log](log.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1log10](log10.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1mod](mod.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1multiply](multiply.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1pow](pow.md)  |  Nein  |  Nein  |  Nein  |  Ja  |  Nein  | 
|  \$1rund  |  -  |  -  |  Nein  |  Nein  |  Nein  | 
|  [\$1sqrt](sqrt.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1subtract](subtract.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  \$1trunc  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 

### Array-Operatoren
<a name="mongo-apis-aggregation-pipeline-array"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1arrayElemAt](arrayElemAt.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1arrayToObject](arrayToObject.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1concatArrays](concatArrays.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1filter](filter.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1first](first.md)  |  -  |  -  |  Ja  |  Ja  |  Nein  | 
|  [\$1in](in-aggregation.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1indexOfArray](indexOfArray.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1isArray](isArray.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1last](last.md)  |  -  |  -  |  Ja  |  Ja  |  Nein  | 
|  [\$1objectToArray](objectToArray.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1range](range.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1reverseArray](reverseArray.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1reduce](reduce.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1size](size.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1slice](slice.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1zip](zip.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Boolesche Operatoren
<a name="mongo-apis-aggregation-pipeline-boolean"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1and](and-aggregation.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1not](not-aggregation.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1or](or-aggregation.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Vergleichsoperatoren
<a name="mongo-apis-aggregation-pipeline-comparison"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1cmp](cmp.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1eq](eq-aggregation.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1gt](gt-aggregation.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1gte](gte-aggregation.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1lt](lt-aggregation.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1lte](lte-aggregation.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1ne](ne-aggregation.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Operatoren für bedingte Ausdrücke
<a name="mongo-apis-aggregation-pipeline-conditional"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1cond](cond.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1ifNull](ifNull.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1switch](switch.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Nein  | 

### Datentyp-Operator
<a name="mongo-apis-aggregation-pipeline-data-type"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1type](type-aggregation.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Operator zur Datengröße
<a name="mongo-apis-aggregation-pipeline-data-size"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  \$1BinarySize  |  -  |  -  |  Nein  |  Nein  |  Nein  | 
|  \$1 bsonGröße  |  -  |  -  |  Nein  |  Nein  |  Nein  | 

### Datumsoperatoren
<a name="mongo-apis-aggregation-pipeline-date"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1DateAdd](dateAdd.md)  |  Nein  |  Nein  |  Ja  |  Ja  |  Ja  | 
|  [\$1DateDiff](dateDiff.md)  |  -  |  -  |  Ja  |  Ja  |  Nein  | 
|  \$1dateFromParts  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  [\$1dateFromString](dateFromString.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1DateSubtrahieren](dateSubtract.md)  |  Nein  |  Nein  |  Ja  |  Ja  |  Ja  | 
|  \$1dateToParts  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  [\$1dateToString](dateToString.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1DateTrunc](dateTrunc.md)  |  -  |  -  |  Nein  |  Ja  |  Nein  | 
|  [\$1dayOfMonth](dayOfMonth.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1dayOfWeek](dayOfWeek.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1dayOfYear](dayOfYear.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1hour](hour.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1 isoDayOf Woche](isoDayOfWeek.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1isoWeek](isoWeek.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1isoWeekYear](isoWeekYear.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1millisecond](millisecond.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1minute](minute.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1month](month.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1second](second.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1week](week.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1year](year.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Wörtlicher Operator
<a name="mongo-apis-aggregation-pipeline-literal"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1literal](literal.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Operator zusammenführen
<a name="mongo-apis-aggregation-pipeline-merge"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1mergeObjects](mergeObjects.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Natürlicher Operator
<a name="mongo-apis-aggregation-pipeline-natural"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1 natürlich](natural.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Satzoperatoren
<a name="mongo-apis-aggregation-pipeline-set"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1allElementsTrue](allElementsTrue.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1anyElementTrue](anyElementTrue.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1setDifference](setDifference.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1setEquals](setEquals.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1setIntersection](setIntersection.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1setIsSubset](setIsSubset.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1setUnion](setUnion.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  \$1setWindowFields  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 

### Betreiber der Bühne
<a name="mongo-apis-aggregation-pipeline-stage"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1addFields](addFields.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1bucket](bucket.md)  |  Nein  |  Nein  |  Nein  |  Ja  |  Nein  | 
|  \$1bucketAuto  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  [\$1 Stream ändern](changeStream.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  [\$1collStats](collStats.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  [\$1count](count.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1currentOp](currentOp.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  \$1facet  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  [\$1geoNear](geoNear.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  \$1graphLookup  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  [\$1group](group.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1indexStats](indexStats.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1limit](limit.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  \$1listLocalSessions  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  \$1listSessions  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  [\$1lookup](lookup.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1match](match.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1 zusammenführen](merge.md)  |  -  |  -  |  Nein  |  Ja  |  Nein  | 
|  [\$1out](out.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  \$1planCacheStats  |  -  |  -  |  Nein  |  Nein  |  Nein  | 
|  [\$1project](project.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1redact](redact.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1replaceRoot](replaceRoot.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1sample](sample.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1set](set-stage.md)  |  -  |  -  |  Nein  |  Ja  |  Nein  | 
|  \$1setWindowFields  |  -  |  -  |  Nein  |  Nein  |  Nein  | 
|  [\$1skip](skip.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1sort](sort.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  \$1sortByCount  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  \$1 Union mit  |  -  |  -  |  Nein  |  Nein  |  Nein  | 
|  [\$1unset](unset-stage.md)  |  -  |  -  |  Nein  |  Ja  |  Nein  | 
|  [\$1unwind](unwind.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1 ersetzendurch](replaceWith.md)  |  Nein  |  Nein  |  Nein  |  Ja  |  Nein  | 
|  [\$1VectorSearch](vectorSearch.md)  |  Nein  |  Nein  |  Nein  |  Ja  |  Nein  | 

### Zeichenfolgenoperatoren
<a name="mongo-apis-aggregation-pipeline-string"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1concat](concat.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1indexOfBytes](indexOfBytes.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1indexOfCP](indexOfCP.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1 ltrim](ltrim.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  [\$1RegexFind](regexFind.md)  |  -  |  -  |  Ja  |  Ja  |  Nein  | 
|  [\$1regexFindAll](regexFindAll.md)  |  -  |  -  |  Ja  |  Ja  |  Nein  | 
|  [\$1RegexMatch](regexMatch.md)  |  -  |  -  |  Ja  |  Ja  |  Nein  | 
|  [\$1 Alles ersetzen](replaceAll.md)  |  -  |  -  |  Ja  |  Ja  |  Nein  | 
|  [\$1 ersetzenEins](replaceOne.md)  |  -  |  -  |  Ja  |  Ja  |  Nein  | 
|  [\$1rtrim](rtrim.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Nein  | 
|  [\$1split](split.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1strcasecmp](strcasecmp.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1strLenBytes](strLenBytes.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1strLenCP](strLenCP.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1substr](substr.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1substrBytes](substrBytes.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1substrCP](substrCP.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1toLower](toLower.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1toUpper](toUpper.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1trim](trim.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Nein  | 

### Systemvariablen
<a name="mongo-apis-aggregation-pipeline-system-variables"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  \$1\$1CURRENT  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  [\$1\$1DESCEND](DESCEND.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1\$1KEEP](KEEP.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1\$1PRUNE](PRUNE.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  \$1\$1REMOVE  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  [\$1 WURZEL](ROOT.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Operator für die Textsuche
<a name="mongo-apis-aggregation-pipeline-text-search"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1meta](meta-aggregation.md)  |  Nein  |  Nein  |  Ja  |  Ja  |  Nein  | 
|  [\$1suche](search.md)  |  Nein  |  Nein  |  Ja  |  Ja  |  Nein  | 

### Geben Sie Konvertierungsoperatoren ein
<a name="mongo-apis-aggregation-pipeline-type"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1 konvertieren](convert.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  \$1 ist Zahl  |  -  |  -  |  Nein  |  Nein  |  Nein  | 
|  [\$1 zu Bool](toBool.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1 bis Datum](toDate.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1 zu Dezimal](toDecimal.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1 bis verdoppeln](toDouble.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1 zu Int](toInt.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1 zu Long](toLong.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1toObjectId](toObjectId.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1 toString](toString.md)  |  Nein  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Variablenoperatoren
<a name="mongo-apis-aggregation-pipeline-variable"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  [\$1let](let.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  [\$1map](map.md)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 

### Verschiedene Betreiber
<a name="mongo-apis-aggregation-pipeline-misc"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  \$1getField  |  -  |  -  |  Nein  |  Nein  |  Nein  | 
|  [\$1 Rand](rand.md)  |  -  |  -  |  Nein  |  Ja  |  Nein  | 
|  \$1Abtastrate  |  -  |  -  |  Nein  |  Nein  |  Nein  | 

## Datentypen
<a name="mongo-apis-data-types"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  32-Bit-Ganzzahl (int)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  64-Bit-Ganzzahl (lang)  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Array  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Binäre Daten  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Boolesch  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Date  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  DBPointer  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  DBRefs  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  Decimal128  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Double  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  JavaScript  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  JavaScript(mit Gültigkeitsbereich)  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  MaxKey  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  MinKey  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Null  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Objekt  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  ObjectId  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Regulärer Ausdruck  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Zeichenfolge  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Symbol  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  Zeitstempel  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Undefined  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 

## Indizes und Indexeigenschaften
<a name="mongo-apis-index"></a>

**Topics**
+ [Indizes](#mongo-apis-indexes)
+ [Eigenschaften indizieren](#mongo-apis-index-properties)

### Indizes
<a name="mongo-apis-indexes"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  2dsphere  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  2D-Index  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  Verbundindex  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Hash-Index  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  Multikey-Index  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Einzelfeldindex  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Textindex  |  Nein  |  Nein  |  Ja  |  Ja  |  Nein  | 
|  Platzhalter  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 

### Eigenschaften indizieren
<a name="mongo-apis-index-properties"></a>


| Befehl | 3.6 | 4,0 | 5.0 | 8.0 | Elastischer Cluster | 
| --- | --- | --- | --- | --- | --- | 
|  Hintergrund  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Berücksichtigt Groß- und Kleinschreibung nicht  |  Nein  |  Nein  |  Nein  |  Ja  |  Nein  | 
|  Hidden  |  Nein  |  Nein  |  Nein  |  Nein  |  Nein  | 
|  Teilweise  |  Nein  |  Nein  |  Ja  |  Ja  |  Nein  | 
|  Sparse  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Text  |  Nein  |  Nein  |  Ja  |  Ja  |  Nein  | 
|  TTL  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Eindeutig  |  Ja  |  Ja  |  Ja  |  Ja  |  Ja  | 
|  Vektor  |  Nein  |  Nein  |  Ja  |  Ja  |  Nein  | 

Ausführliche Informationen zu bestimmten MongoDB-Operatoren finden Sie in den folgenden Themen:
+ [Betreiber von Aggregationspipelines](mongo-apis-aggregation-pipeline-operators.md)
+ [Geodaten](mongo-apis-geospatial-operators.md)
+ [Projektionsoperatoren](#mongo-apis-projection-operators)
+ [Operatoren aktualisieren](mongo-apis-update-operators.md)

# Betreiber von Aggregationspipelines
<a name="mongo-apis-aggregation-pipeline-operators"></a>

Dieser Abschnitt enthält detaillierte Informationen zu Aggregationspipeline-Operatoren, die von Amazon DocumentDB unterstützt werden.

**Topics**
+ [\$1\$1DESCEND](DESCEND.md)
+ [\$1\$1KEEP](KEEP.md)
+ [\$1\$1PRUNE](PRUNE.md)
+ [\$1 WURZEL](ROOT.md)
+ [\$1abs](abs.md)
+ [\$1add](add.md)
+ [\$1addToSet](addToSet-aggregation.md)
+ [\$1addFields](addFields.md)
+ [\$1allElementsTrue](allElementsTrue.md)
+ [\$1and](and-aggregation.md)
+ [\$1anyElementTrue](anyElementTrue.md)
+ [\$1arrayElemAt](arrayElemAt.md)
+ [\$1arrayToObject](arrayToObject.md)
+ [\$1avg](avg.md)
+ [\$1bucket](bucket.md)
+ [\$1ceil](ceil.md)
+ [\$1 Stream ändern](changeStream.md)
+ [\$1cmp](cmp.md)
+ [\$1collStats](collStats.md)
+ [\$1concat](concat.md)
+ [\$1concatArrays](concatArrays.md)
+ [\$1cond](cond.md)
+ [\$1 konvertieren](convert.md)
+ [\$1count](count.md)
+ [\$1currentOp](currentOp.md)
+ [\$1DateAdd](dateAdd.md)
+ [\$1DateDiff](dateDiff.md)
+ [\$1dateFromString](dateFromString.md)
+ [\$1DateSubtrahieren](dateSubtract.md)
+ [\$1dateToString](dateToString.md)
+ [\$1DateTrunc](dateTrunc.md)
+ [\$1dayOfMonth](dayOfMonth.md)
+ [\$1dayOfWeek](dayOfWeek.md)
+ [\$1dayOfYear](dayOfYear.md)
+ [\$1divide](divide.md)
+ [\$1eq](eq-aggregation.md)
+ [\$1exp](exp.md)
+ [\$1filter](filter.md)
+ [\$1first](first.md)
+ [\$1floor](floor.md)
+ [\$1geoNear](geoNear.md)
+ [\$1group](group.md)
+ [\$1gt](gt-aggregation.md)
+ [\$1gte](gte-aggregation.md)
+ [\$1hour](hour.md)
+ [\$1ifNull](ifNull.md)
+ [\$1in](in-aggregation.md)
+ [\$1indexOfArray](indexOfArray.md)
+ [\$1indexOfBytes](indexOfBytes.md)
+ [\$1indexOfCP](indexOfCP.md)
+ [\$1indexStats](indexStats.md)
+ [\$1isArray](isArray.md)
+ [\$1 isoDayOf Woche](isoDayOfWeek.md)
+ [\$1isoWeek](isoWeek.md)
+ [\$1isoWeekYear](isoWeekYear.md)
+ [\$1last](last.md)
+ [\$1let](let.md)
+ [\$1limit](limit.md)
+ [\$1literal](literal.md)
+ [\$1ln](ln.md)
+ [\$1log](log.md)
+ [\$1log10](log10.md)
+ [\$1lt](lt-aggregation.md)
+ [\$1lte](lte-aggregation.md)
+ [\$1lookup](lookup.md)
+ [\$1 ltrim](ltrim.md)
+ [\$1map](map.md)
+ [\$1match](match.md)
+ [\$1max](max.md)
+ [\$1meta](meta-aggregation.md)
+ [\$1 zusammenführen](merge.md)
+ [\$1mergeObjects](mergeObjects.md)
+ [\$1millisecond](millisecond.md)
+ [\$1min](min.md)
+ [\$1minute](minute.md)
+ [\$1mod](mod.md)
+ [\$1month](month.md)
+ [\$1multiply](multiply.md)
+ [\$1 natürlich](natural.md)
+ [\$1ne](ne-aggregation.md)
+ [\$1not](not-aggregation.md)
+ [\$1objectToArray](objectToArray.md)
+ [\$1or](or-aggregation.md)
+ [\$1out](out.md)
+ [\$1pow](pow.md)
+ [\$1push](push-aggregation.md)
+ [\$1project](project.md)
+ [\$1 Rand](rand.md)
+ [\$1range](range.md)
+ [\$1redact](redact.md)
+ [\$1reduce](reduce.md)
+ [\$1RegexFind](regexFind.md)
+ [\$1regexFindAll](regexFindAll.md)
+ [\$1RegexMatch](regexMatch.md)
+ [\$1 Alles ersetzen](replaceAll.md)
+ [\$1 ersetzenEins](replaceOne.md)
+ [\$1replaceRoot](replaceRoot.md)
+ [\$1 ersetzendurch](replaceWith.md)
+ [\$1reverseArray](reverseArray.md)
+ [\$1rtrim](rtrim.md)
+ [\$1sample](sample.md)
+ [\$1suche](search.md)
+ [\$1second](second.md)
+ [\$1set](set-stage.md)
+ [\$1setDifference](setDifference.md)
+ [\$1setEquals](setEquals.md)
+ [\$1setIntersection](setIntersection.md)
+ [\$1setIsSubset](setIsSubset.md)
+ [\$1setUnion](setUnion.md)
+ [\$1skip](skip.md)
+ [\$1slice](slice.md)
+ [\$1size](size.md)
+ [\$1sort](sort.md)
+ [\$1split](split.md)
+ [\$1sqrt](sqrt.md)
+ [\$1strLenBytes](strLenBytes.md)
+ [\$1strLenCP](strLenCP.md)
+ [\$1strcasecmp](strcasecmp.md)
+ [\$1substr](substr.md)
+ [\$1substrBytes](substrBytes.md)
+ [\$1substrCP](substrCP.md)
+ [\$1subtract](subtract.md)
+ [\$1sum](sum.md)
+ [\$1switch](switch.md)
+ [\$1 zu Bool](toBool.md)
+ [\$1 bis Datum](toDate.md)
+ [\$1 zu Dezimal](toDecimal.md)
+ [\$1 bis verdoppeln](toDouble.md)
+ [\$1 zu Int](toInt.md)
+ [\$1 zu Long](toLong.md)
+ [\$1toLower](toLower.md)
+ [\$1toObjectId](toObjectId.md)
+ [\$1 toString](toString.md)
+ [\$1toUpper](toUpper.md)
+ [\$1trim](trim.md)
+ [\$1type](type-aggregation.md)
+ [\$1unset](unset-stage.md)
+ [\$1unwind](unwind.md)
+ [\$1VectorSearch](vectorSearch.md)
+ [\$1week](week.md)
+ [\$1year](year.md)
+ [\$1zip](zip.md)

# \$1\$1DESCEND
<a name="DESCEND"></a>

Der `$$DESCEND` Operator in Amazon DocumentDB ist ein spezieller Positions-Array-Operator, der in der `$redact` Pipeline-Phase verwendet wird. Er weist die Aggregationspipeline an, in das aktuelle Dokument abzusteigen und alle Felder zu verarbeiten, unabhängig von ihrer Verschachtelungsebene.

Wenn die `$redact` Phase auf den `$$DESCEND` Operator trifft, bleiben alle Felder im aktuellen Dokument sichtbar und werden weiter unten in der Pipeline verarbeitet. Dies ist nützlich, wenn Sie bestimmte Felder anhand einer Bedingung selektiv schwärzen oder beschneiden und dabei die Struktur des Dokuments beibehalten möchten.

**Parameter**

Keine.

## Beispiel (MongoDB Shell)
<a name="DESCEND-examples"></a>

In diesem Beispiel verwenden wir den `$redact` Schritt mit dem `$$DESCEND` Operator, um selektiv Dokumente anzuzeigen, bei denen das `code` Feld „Reg“ entspricht.

**Erstellen Sie Beispieldokumente**

```
db.patient.insertMany([
  { "_id": 1, "code": "Emp", "patient": "John Doe", "DOB": "1/1/1980", "Hospital": "Main" },
  { "_id": 2, "code": "Reg", "patient": "Jane Doe", "DOB": "3/27/1989", "Hospital": "Cherry Hill" },
  { "_id": 3, "code": "Emp", "patient": "Bob Smith", "DOB": "6/15/1975", "Hospital": "Downtown" }
]);
```

**Beispiel für eine Abfrage**

```
db.patient.aggregate([
  { $redact: {
    $cond: {
      if: { $eq: ["Reg", "$code"] },
      then: "$$DESCEND",
      else: "$$PRUNE"
    }
  }}
]);
```

**Ausgabe**

```
{
  "_id": 2,
  "code": "Reg",
  "patient": "Jane Doe",
  "DOB": "3/27/1989",
  "Hospital": "Cherry Hill"
}
```

## Codebeispiele
<a name="DESCEND-code"></a>

Um ein Codebeispiel für die Verwendung des `$$DESCEND` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function redactPatients() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('patient');

  const result = await collection.aggregate([
    { $redact: {
      $cond: {
        if: { $eq: ["Reg", "$code"] },
        then: "$$DESCEND",
        else: "$$PRUNE"
      }
    }}
  ]).toArray();

  console.log(result);
  client.close();
}

redactPatients();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def redact_patients():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.patient

    result = list(collection.aggregate([
        { "$redact": {
            "$cond": {
                "if": { "$eq": ["Reg", "$code"] },
                "then": "$$DESCEND",
                "else": "$$PRUNE"
            }
        }}
    ]))

    print(result)
    client.close()

redact_patients()
```

------

# \$1\$1KEEP
<a name="KEEP"></a>

Die `$$KEEP` Systemvariable wird zusammen mit der `$redact` Phase in der Aggregationspipeline verwendet, um das aktuelle Dokument oder Feld unverändert zu lassen und es in die Ausgabe aufzunehmen.

**Parameter**

Keine

## Beispiel (MongoDB Shell)
<a name="KEEP-examples"></a>

Das folgende Beispiel zeigt die Verwendung von `$$KEEP` in einer Amazon DocumentDB-Aggregationspipeline. Dokumente werden nur aufbewahrt, wenn der Zugriff auf „öffentlich“ steht, andernfalls werden sie entfernt.

**Erstellen Sie Beispieldokumente**

```
db.articles.insertMany([
  { title: "Article A", access: "public", content: "Visible content" },
  { title: "Article B", access: "private", content: "Hidden content" }
]);
```

**Beispiel für eine Abfrage**

```
db.articles.aggregate([
  {
    $redact: {
      $cond: [
        { $eq: ["$access", "public"] },
        "$$KEEP",
        "$$PRUNE"
      ]
    }
  }
]);
```

**Ausgabe**

```
[
  {
    "_id" : ObjectId("..."),
    "title" : "Article A",
    "access" : "public",
    "content" : "Visible content"
  }
]
```

## Codebeispiele
<a name="KEEP-code"></a>

Um ein Codebeispiel für die Verwendung des `$$KEEP` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function run() {
  const client = new MongoClient(
    'mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0'
  );

  try {
    await client.connect();
    const db = client.db('test');
    const articles = db.collection('articles');

    const pipeline = [
      {
        $redact: {
          $cond: [
            { $eq: ["$access", "public"] },
            "$$KEEP",
            "$$PRUNE"
          ]
        }
      }
    ];

    const results = await articles.aggregate(pipeline).toArray();
    console.log(results);
  } finally {
    await client.close();
  }
}

run().catch(console.error);
```

------
#### [ Python ]

```
from pymongo import MongoClient

client = MongoClient(
    "mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0"
)

db = client.test
articles = db.articles

pipeline = [
    {
        "$redact": {
            "$cond": [
                {"$eq": ["$access", "public"]},
                "$$KEEP",
                "$$PRUNE"
            ]
        }
    }
]

results = list(articles.aggregate(pipeline))
print(results)

client.close()
```

------

# \$1\$1PRUNE
<a name="PRUNE"></a>

Die `$$PRUNE` Systemvariable wird zusammen mit der `$redact` Phase in der Aggregationspipeline verwendet, um Dokumente oder eingebettete Dokumentebenen aus den Ergebnissen auszuschließen. Wenn eine Bedingung als Ergebnis ausgewertet wird`$$PRUNE`, wird das aktuelle Dokument oder Unterdokument aus der Ausgabe entfernt. Es wird normalerweise zusammen mit `$$DESCEND` (um das Dokument zu behalten und zu durchsuchen) oder `$$KEEP` (um das Dokument auf allen Ebenen beizubehalten) verwendet.

**Parameter**

Keine. Die `$$PRUNE` Systemvariable wird ohne Parameter verwendet und muss mit `$redact` verwendet werden.

## Beispiel (MongoDB Shell)
<a name="PRUNE-examples"></a>

Das folgende Beispiel zeigt, wie Sie `$$PRUNE` mit with Benutzer`$redact`, die älter als 30 Jahre sind, von den Ergebnissen ausschließen können.

**Erstellen Sie Beispieldokumente**

```
db.users.insert([
  { _id:1, name: "Carlos Salazar", age: 35, address: { street: "123 Main St", city: "Anytown", state: "CA" } },
  { _id:2, name: "Saanvi Sarkar", age: 28, address: { street: "456 Oak Rd", city: "Someplace", state: "NY" } },
  { _id:3, name: "Li Juan", age: 42, address: { street: "789 Pine Ave", city: "Springfield", state: "TX" } }
])
```

**Beispiel für eine Abfrage**

```
db.users.aggregate([
  {
    $redact: {
      $cond: {
        if: { $gt: ["$age", 30] },
        then: "$$PRUNE",
        else: "$$DESCEND"
      }
    }
  }
])
```

**Ausgabe**

```
[
  {
    "_id": 2,
    "name": "Saanvi Sarkar",
    "age": 28,
    "address": {
      "street": "456 Oak Rd",
      "city": "Someplace",
      "state": "NY"
    }
  }
]
```

## Codebeispiele
<a name="PRUNE-code"></a>

Um ein Codebeispiel für die Verwendung des `$$PRUNE` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

const client = new MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');

async function main() {
  await client.connect();
  const db = client.db('test');
  const users = db.collection('users');

  const result = await users.aggregate([
    {
      $redact: {
        $cond: {
          if: { $gt: ["$age", 30] },
          then: "$$PRUNE",
          else: "$$DESCEND"
        }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
users = db['users']

result = list(users.aggregate([
    {
        '$redact': {
            '$cond': {
                'if': { '$gt': ['$age', 30] },
                'then': '$$PRUNE',
                'else': '$$DESCEND'
            }
        }
    }
]))

print(result)
client.close()
```

------

# \$1 WURZEL
<a name="ROOT"></a>

Der `$ROOT` Operator in Amazon DocumentDB wird verwendet, um auf das gesamte Eingabedokument innerhalb einer Aggregationspipeline zu verweisen. Damit können Sie auf das gesamte Dokument zugreifen und es bearbeiten, einschließlich all seiner verschachtelten Felder und Strukturen.

**Parameter**

Keine

## Beispiel (MongoDB Shell)
<a name="ROOT-examples"></a>

Dieses Beispiel zeigt, wie `$ROOT` Sie ein Prüfprotokoll erstellen können, das das vollständige Originaldokument zusammen mit Metadaten darüber, wann es verarbeitet wurde, erfasst.

**Erstellen Sie Beispieldokumente**

```
db.orders.insertMany([
  {
    _id: 1,
    orderId: "ORD-2024-001",
    customer: "María García",
    email: "maría@example.com",
    items: [
      { product: "Laptop", quantity: 1, price: 1299.99 }
    ],
    totalAmount: 1299.99
  },
  {
    _id: 2,
    orderId: "ORD-2024-002",
    customer: "Arnav Desai",
    email: "arnav@example.com",
    items: [
      { product: "Mouse", quantity: 2, price: 29.99 },
      { product: "Keyboard", quantity: 1, price: 89.99 }
    ],
    totalAmount: 149.97
  }
]);
```

**Beispiel für eine Abfrage**

```
db.orders.aggregate([
  {
    $project: {
      processedAt: new Date(),
      originalDocument: "$$ROOT",
      summary: {
        $concat: [
          "Order ",
          "$orderId",
          " for ",
          "$customer",
          " - Total: $",
          { $toString: "$totalAmount" }
        ]
      }
    }
  }
]);
```

**Ausgabe**

```
[
  {
    _id: 1,
    processedAt: ISODate('2025-11-24T20:43:51.492Z'),
    originalDocument: {
      _id: 1,
      orderId: 'ORD-2024-001',
      customer: 'María García',
      email: 'maría@example.com',
      items: [ { product: 'Laptop', quantity: 1, price: 1299.99 } ],
      totalAmount: 1299.99
    },
    summary: 'Order ORD-2024-001 for María García - Total: $1299.99'
  },
  {
    _id: 2,
    processedAt: ISODate('2025-11-24T20:43:51.492Z'),
    originalDocument: {
      _id: 2,
      orderId: 'ORD-2024-002',
      customer: 'Arnav Desai',
      email: 'arnav@example.com',
      items: [
        { product: 'Mouse', quantity: 2, price: 29.99 },
        { product: 'Keyboard', quantity: 1, price: 89.99 }
      ],
      totalAmount: 149.97
    },
    summary: 'Order ORD-2024-002 for Arnav Desai - Total: $149.97'
  }
]
```

## Codebeispiele
<a name="ROOT-code"></a>

Um ein Codebeispiel für die Verwendung des `$ROOT` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function createAuditLog() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const orders = db.collection('orders');

  const result = await orders.aggregate([
    {
      $project: {
        processedAt: new Date(),
        originalDocument: "$$ROOT",
        summary: {
          $concat: [
            "Order ",
            "$orderId",
            " for ",
            "$customer",
            " - Total: $",
            { $toString: "$totalAmount" }
          ]
        }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

createAuditLog();
```

------
#### [ Python ]

```
from pymongo import MongoClient
from datetime import datetime

def create_audit_log():
    client = MongoClient('mongodb://username:password@docdb-cluster.cluster-123456789.us-east-1.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['orders']

    result = list(collection.aggregate([
        {
            '$project': {
                'processedAt': datetime.now(),
                'originalDocument': '$$ROOT',
                'summary': {
                    '$concat': [
                        "Order ",
                        "$orderId",
                        " for ",
                        "$customer",
                        " - Total: $",
                        { '$toString': "$totalAmount" }
                    ]
                }
            }
        }
    ]))

    print(result)
    client.close()

create_audit_log()
```

------

# \$1abs
<a name="abs"></a>

Der `$abs` Operator in Amazon DocumentDB gibt den absoluten Wert einer Zahl zurück. Er kann in der Aggregationspipeline verwendet werden, um mathematische Operationen an numerischen Feldern durchzuführen.

**Parameter**
+ `number`: Der numerische Ausdruck, für den der absolute Wert zurückgegeben wird.

## Beispiel (MongoDB Shell)
<a name="abs-examples"></a>

Dieses Beispiel demonstriert die Verwendung des `$abs` Operators, um den absoluten Wert eines numerischen Feldes zu ermitteln.

**Erstellen Sie Beispieldokumente**

```
db.numbers.insertMany([
  { "_id": 1, "value": -5 },
  { "_id": 2, "value": 10 },
  { "_id": 3, "value": -3.14 },
  { "_id": 4, "value": 0 }
]);
```

**Beispiel für eine Abfrage**

```
db.numbers.aggregate([
  { $project: {
    "_id": 1,
    "absolute_value": { $abs: "$value" }
  }}
]);
```

**Ausgabe**

```
[
  { "_id": 1, "absolute_value": 5 },
  { "_id": 2, "absolute_value": 10 },
  { "_id": 3, "absolute_value": 3.14 },
  { "_id": 4, "absolute_value": 0 }
]
```

## Codebeispiele
<a name="abs-code"></a>

Um ein Codebeispiel für die Verwendung des `$abs` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('numbers');

  const result = await collection.aggregate([
    { $project: {
      "_id": 1,
      "absolute_value": { $abs: "$value" }
    }}
  ]).toArray();

  console.log(result);
  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def main():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['numbers']

    result = list(collection.aggregate([
        { '$project': {
            "_id": 1,
            "absolute_value": { "$abs": "$value" }
        }}
    ]))

    print(result)
    client.close()

if __name__ == "__main__":
    main()
```

------

# \$1add
<a name="add"></a>

Der `$add` Operator in Amazon DocumentDB wird verwendet, um Zahlen oder Daten zu addieren. Er kann verwendet werden, um arithmetische Operationen an numerischen Feldern durchzuführen oder um Datumsarithmetik durchzuführen, indem einem Datumsfeld eine Anzahl von Zeiteinheiten hinzugefügt wird.

**Parameter**
+ `expression1`: Die erste Zahl oder das erste Datum, das hinzugefügt werden soll.
+ `expression2`: Die zweite Zahl oder das zweite Datum, das hinzugefügt werden soll.
+ `expression3`: (optional) Zusätzliche Zahlen oder Daten, die hinzugefügt werden sollen.

## Beispiel (MongoDB Shell)
<a name="add-examples"></a>

Das folgende Beispiel zeigt, wie der `$add` Operator verwendet wird, um zwei Zahlen zu addieren.

**Erstellen Sie Beispieldokumente**

```
db.numbers.insertMany([
  { _id: 1, a: 5, b: 3 },
  { _id: 2, a: 10, b: 7 },
  { _id: 3, a: 2, b: 8 }
]);
```

**Beispiel für eine Abfrage**

```
db.numbers.aggregate([
  { $project: {
    _id: 1,
    sum: { $add: ["$a", "$b"] }
  }}
])
```

**Ausgabe**

```
[
  { "_id" : 1, "sum" : 8 },
  { "_id" : 2, "sum" : 17 },
  { "_id" : 3, "sum" : 10 }
]
```

In diesem Beispiel wird der `$add` Operator verwendet, um die Werte der `b` Felder `a` und für jedes Dokument hinzuzufügen und das Ergebnis im `sum` Feld zu speichern.

## Codebeispiele
<a name="add-code"></a>

Um ein Codebeispiel für die Verwendung des `$add` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('numbers');

  const result = await collection.aggregate([
    { $project: {
      _id: 1,
      sum: { $add: ['$a', '$b'] }
    }}
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
collection = db['numbers']

result = list(collection.aggregate([
    { '$project': {
        '_id': 1,
        'sum': { '$add': ['$a', '$b'] }
    }}
]))

print(result)
client.close()
```

------

# \$1addToSet
<a name="addToSet-aggregation"></a>

Der `$addToSet` Aggregationsoperator gibt für jede Gruppe ein Array von Einzelwerten aus einem angegebenen Ausdruck zurück. Er wird innerhalb der `$group` Phase verwendet, um unterschiedliche Werte zu akkumulieren, wodurch Duplikate automatisch entfernt werden.

**Parameter**
+ `expression`: Der Ausdruck, der für jedes Dokument in der Gruppe ausgewertet werden soll.

## Beispiel (MongoDB Shell)
<a name="addToSet-aggregation-examples"></a>

Das folgende Beispiel zeigt, wie der `$addToSet` Operator verwendet wird, um für jeden Kunden eindeutige Städte zu erfassen, in denen Bestellungen aufgegeben wurden.

**Erstellen Sie Beispieldokumente**

```
db.orders.insertMany([
  { _id: 1, customer: "Alice", city: "Seattle", amount: 100 },
  { _id: 2, customer: "Alice", city: "Portland", amount: 150 },
  { _id: 3, customer: "Bob", city: "Seattle", amount: 200 },
  { _id: 4, customer: "Alice", city: "Seattle", amount: 75 },
  { _id: 5, customer: "Bob", city: "Boston", amount: 300 }
]);
```

**Beispiel für eine Abfrage**

```
db.orders.aggregate([
  {
    $group: {
      _id: "$customer",
      cities: { $addToSet: "$city" }
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 'Bob', cities: [ 'Seattle', 'Boston' ] },
  { _id: 'Alice', cities: [ 'Seattle', 'Portland' ] }
]
```

## Codebeispiele
<a name="addToSet-aggregation-code"></a>

Um ein Codebeispiel für die Verwendung des `$addToSet` Aggregationsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('orders');

  const result = await collection.aggregate([
    {
      $group: {
        _id: "$customer",
        cities: { $addToSet: "$city" }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['orders']

    result = list(collection.aggregate([
        {
            '$group': {
                '_id': '$customer',
                'cities': { '$addToSet': '$city' }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1addFields
<a name="addFields"></a>

Die `$addFields` Phase in der Amazon DocumentDB-Aggregationspipeline ermöglicht es Ihnen, neue berechnete Felder zu Dokumenten hinzuzufügen. Dies kann nützlich sein, um den Dokumenten abgeleitete oder transformierte Daten hinzuzufügen.

**Parameter**
+ `newField`: Der Name des neuen Feldes, das hinzugefügt werden soll.
+ `expression`: Ein Ausdruck, der den Wert des neuen Felds ergibt.

## Beispiel (MongoDB Shell)
<a name="addFields-examples"></a>

Das folgende Beispiel zeigt, wie Sie ein neues Feld `$addFields` hinzufügen`TotalInventory`, das den Gesamtbestand auf der Grundlage der Felder `Inventory.OnHand` und `Inventory.OrderQnty` berechnet.

**Erstellen Sie Beispieldokumente**

```
db.example.insertMany([
  {
    "Item": "Spray Paint",
    "Colors": ["Black", "Red", "Green", "Blue"],
    "Inventory": {
      "OnHand": 47,
      "MinOnHand": 50,
      "OrderQnty": 36
    },
    "UnitPrice": 3.99
  },
  {
    "Item": "Ruler",
    "Colors": ["Red", "Green", "Blue", "Clear", "Yellow"],
    "Inventory": {
      "OnHand": 47,
      "MinOnHand": 40
    },
    "UnitPrice": 0.89
  }
]);
```

**Beispiel für eine Abfrage**

```
db.example.aggregate([
  {
    $addFields: {
      TotalInventory: { $add: ["$Inventory.OnHand", "$Inventory.OrderQnty"] }
    }
  }
])
```

**Ausgabe**

```
[
  {
    "_id" : ObjectId("5bedafbcf65ff161707de24f"),
    "Item" : "Ruler",
    "Colors" : [ "Red", "Green", "Blue", "Clear", "Yellow" ],
    "Inventory" : {
      "OnHand" : 47,
      "MinOnHand" : 40
    },
    "UnitPrice" : 0.89,
    "TotalInventory" : 47
  },
  {
    "_id" : ObjectId("5bedafbcf65ff161707de250"),
    "Item" : "Spray Paint",
    "Colors" : [ "Black", "Red", "Green", "Blue" ],
    "Inventory" : {
      "OnHand" : 47,
      "MinOnHand" : 50,
      "OrderQnty" : 36
    },
    "UnitPrice" : 3.99,
    "TotalInventory" : 83
  }
]
```

## Codebeispiele
<a name="addFields-code"></a>

Um ein Codebeispiel für die Verwendung des `$addFields` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
const db = client.db('test');
const collection = db.collection('example');

const result = await collection.aggregate([
  {
    $addFields: {
      TotalInventory: { $add: ['$Inventory.OnHand', '$Inventory.OrderQnty'] }
    }
  }
]).toArray();

console.log(result);

await client.close();
```

------
#### [ Python ]

```
from pymongo import MongoClient

client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
collection = db['example']

result = list(collection.aggregate([
    {
        '$addFields': {
            'TotalInventory': { '$add': ['$Inventory.OnHand', '$Inventory.OrderQnty'] }
        }
    }
]))

print(result)
client.close()
```

------

# \$1allElementsTrue
<a name="allElementsTrue"></a>

Neu ab Version 4.0

Der `$allElementsTrue` Operator wird verwendet, um zu überprüfen, ob alle Elemente in einem Array einen wahren Wert ergeben.

**Parameter**
+ `expression`: Ein Ausdruck, der zu einem Array ausgewertet wird.

## Beispiel (MongoDB Shell)
<a name="allElementsTrue-examples"></a>

Das folgende Beispiel zeigt die Verwendung von`$allElementsTrue`, um zu überprüfen, ob alle Elemente in einem Array wahr sind.

**Erstellen Sie Beispieldokumente**

```
db.collection.insert([
  { "name": "John", "scores": [100, 90, 80] },
  { "name": "Jane", "scores": [80, 85, 0] },
  { "name": "Bob", "scores": [90, 95, null] }
])
```

**Beispiel für eine Abfrage**

```
db.collection.find({
  "scores": { "$allElementsTrue": [{ "$gt": 0 }] }
})
```

**Ausgabe**

```
[
  { "_id" : ObjectId("..."), "name" : "John", "scores" : [ 100, 90, 80 ] },
  { "_id" : ObjectId("..."), "name" : "Bob", "scores" : [ 90, 95, null ] }
]
```

In diesem Beispiel prüft die Abfrage, ob alle Elemente im `scores` Array größer als 0 sind. Das Dokument mit `&quot;name&quot;: &quot;Jane&quot;` wird ausgeschlossen, weil das `scores` Array eine 0 enthält, was ein falscher Wert ist.

## Codebeispiele
<a name="allElementsTrue-code"></a>

Um ein Codebeispiel für die Verwendung des `$allElementsTrue` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('collection');

  const result = await collection.find({
    "scores": { "$allElementsTrue": [{ "$gt": 0 }] }
  }).toArray();

  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['collection']

    result = list(collection.find({
        "scores": {"$allElementsTrue": [{"$gt": 0}]}
    }))

    print(result)

    client.close()

example()
```

------

# \$1and
<a name="and-aggregation"></a>

Der `$and` Aggregationsoperator wertet mehrere Ausdrücke aus und gibt `true` nur zurück, wenn alle Ausdrücke zu 0 ausgewertet werden. `true` Wenn ein Ausdruck „Ja“ ist`false`, wird er zurückgegeben. `false`

**Parameter**
+ `expressions`: Eine Reihe von Ausdrücken, die ausgewertet werden sollen.

## Beispiel (MongoDB Shell)
<a name="and-aggregation-examples"></a>

Das folgende Beispiel zeigt, wie der `$and` Operator verwendet wird, um zu überprüfen, ob Produkte mehrere Kriterien erfüllen.

**Erstellen Sie Beispieldokumente**

```
db.products.insertMany([
  { _id: 1, name: "Laptop", price: 1200, inStock: true },
  { _id: 2, name: "Mouse", price: 25, inStock: false },
  { _id: 3, name: "Keyboard", price: 75, inStock: true }
]);
```

**Beispiel für eine Abfrage**

```
db.products.aggregate([
  {
    $project: {
      name: 1,
      price: 1,
      inStock: 1,
      affordable: {
        $and: [
          { $lt: ["$price", 100] },
          { $eq: ["$inStock", true] }
        ]
      }
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 1, name: 'Laptop', price: 1200, inStock: true, affordable: false },
  { _id: 2, name: 'Mouse', price: 25, inStock: false, affordable: false },
  { _id: 3, name: 'Keyboard', price: 75, inStock: true, affordable: true }
]
```

## Codebeispiele
<a name="and-aggregation-code"></a>

Um ein Codebeispiel für die Verwendung des `$and` Aggregationsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('products');

  const result = await collection.aggregate([
    {
      $project: {
        name: 1,
        price: 1,
        inStock: 1,
        affordable: {
          $and: [
            { $lt: ["$price", 100] },
            { $eq: ["$inStock", true] }
          ]
        }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['products']

    result = list(collection.aggregate([
        {
            '$project': {
                'name': 1,
                'price': 1,
                'inStock': 1,
                'affordable': {
                    '$and': [
                        { '$lt': ['$price', 100] },
                        { '$eq': ['$inStock', True] }
                    ]
                }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1anyElementTrue
<a name="anyElementTrue"></a>

Neu ab Version 4.0

Der `$anyElementTrue` Operator wird verwendet, um festzustellen, ob ein Element in einem Array wahr ist.

**Parameter**
+ `field`: Ein auszuwertendes Array-Feld.

## Beispiel (MongoDB Shell)
<a name="anyElementTrue-examples"></a>

Das folgende Beispiel zeigt die Verwendung von`$anyElementTrue`, um zu überprüfen, ob ein Element in einem Array wahr ist.

**Erstellen Sie Beispieldokumente**

```
db.grades.insertMany([
  { _id: 1, student: 'Tim', scores: [false, false, null] },
  { _id: 2, student: 'Bob', scores: [false, 0, false] },
  { _id: 3, student: 'Ivy', scores: [false, true, 0] }
])
```

**Beispiel für eine Abfrage**

```
db.grades.aggregate([
  {
    $project: {
      student: 1,
      isAnyTrue: { $anyElementTrue: ["$scores"] },
      _id: 0
    }
  }
])
```

**Ausgabe**

```
[
  { student: 'Tim', isAnyTrue: false },
  { student: 'Bob', isAnyTrue: false },
  { student: 'Ivy', isAnyTrue: true }
]
```

## Codebeispiele
<a name="anyElementTrue-code"></a>

Um ein Codebeispiel für die Verwendung des `$anyElementTrue` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('grades');

  const result = await collection.aggregate([
    {
      $project: {
        student: 1,
        isAnyTrue: { $anyElementTrue: ["$scores"] },
        _id: 0
      }
    }
  ]).toArray();

  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['grades']

    result = list(collection.aggregate([
      {
        "$project": {
          "student": 1,
          "isAnyTrue": { "$anyElementTrue": ["$scores"] },
          "_id": 0
        }
      }
    ]))

    print(result)

    client.close()

example()
```

------

# \$1arrayElemAt
<a name="arrayElemAt"></a>

Der `$arrayElemAt` Operator in Amazon DocumentDB ermöglicht es Ihnen, ein Element anhand seiner Indexposition aus einem Array abzurufen. Dies ist besonders nützlich, wenn Sie auf ein bestimmtes Element innerhalb eines Array-Felds in Ihren Dokumenten zugreifen müssen.

**Parameter**
+ `array`: Das Eingabe-Array, aus dem ein Element abgerufen werden soll.
+ `index`: Die auf Null basierende Indexposition des abzurufenden Elements. Dieser Wert muss eine nicht negative Ganzzahl sein.

## Beispiel (MongoDB Shell)
<a name="arrayElemAt-examples"></a>

In diesem Beispiel zeigen wir, wie der `$arrayElemAt` Operator verwendet wird, um bestimmte Elemente aus dem `flight_miles` Array in der `miles` Sammlung abzurufen.

**Erstellen Sie Beispieldokumente**

```
db.miles.insertMany([
  { "_id" : 1, "member_since" : ISODate("1987-01-01T00:00:00Z"), "credit_card" : false, "flight_miles" : [ 1205, 2560, 880 ]},
  { "_id" : 2, "member_since" : ISODate("1982-01-01T00:00:00Z"), "credit_card" : true, "flight_miles" : [ 1205, 2560, 890, 2780 ]},
  { "_id" : 3, "member_since" : ISODate("1999-01-01T00:00:00Z"), "credit_card" : true, "flight_miles" : [ 1205, 880 ]}
]);
```

**Beispiel für eine Abfrage**

```
db.miles.aggregate([
  { $project: {
    "_id": 1,
    "first_mile": { $arrayElemAt: [ "$flight_miles", 0 ] },
    "last_mile": { $arrayElemAt: [ "$flight_miles", -1 ] }
  }}
]);
```

**Ausgabe**

```
{ "_id" : 1, "first_mile" : 1205, "last_mile" : 880 }
{ "_id" : 2, "first_mile" : 1205, "last_mile" : 2780 }
{ "_id" : 3, "first_mile" : 1205, "last_mile" : 880 }
```

In diesem Beispiel verwenden wir den `$arrayElemAt` Operator, um das erste und das letzte Element des `flight_miles` Arrays für jedes Dokument abzurufen.

## Codebeispiele
<a name="arrayElemAt-code"></a>

Um ein Codebeispiel für die Verwendung des `$arrayElemAt` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('miles');

  const result = await collection.aggregate([
    { $project: {
      "_id": 1,
      "first_mile": { $arrayElemAt: [ "$flight_miles", 0 ] },
      "last_mile": { $arrayElemAt: [ "$flight_miles", -1 ] }
    }}
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.mydatabase
    collection = db.miles

    result = list(collection.aggregate([
        { "$project": {
            "_id": 1,
            "first_mile": { "$arrayElemAt": [ "$flight_miles", 0 ] },
            "last_mile": { "$arrayElemAt": [ "$flight_miles", -1 ] }
        }}
    ]))

    print(result)
    client.close()

example()
```

------

# \$1arrayToObject
<a name="arrayToObject"></a>

Der `$arrayToObject` Operator in Amazon DocumentDB ist das Gegenteil des `$objectToArray` Operators. Er nimmt ein Array von Dokumenten mit Schlüssel-Wert-Paaren und konvertiert es in ein einzelnes Dokument. Dies ist besonders nützlich, wenn Sie ein Array von Schlüssel-Wert-Paaren wieder in eine Objekt- oder Dokumentstruktur konvertieren müssen.

**Parameter**
+ `array expression`: Ein Ausdruck, der in ein Array aufgelöst wird. Die Array-Elemente müssen Dokumente mit zwei Feldern sein: `k` (der Schlüssel) und `v` (der Wert).

## Beispiel (MongoDB Shell)
<a name="arrayToObject-examples"></a>

Das folgende Beispiel zeigt, wie Sie `$arrayToObject` ein Array von Schlüssel-Wert-Paaren wieder in ein Dokument konvertieren können.

**Erstellen Sie Beispieldokumente**

```
db.videos.insertMany([
  { "_id": 1, "name": "Live Soft", "inventory": { "Des Moines": 1000, "Ames": 500 } },
  { "_id": 2, "name": "Top Pilot", "inventory": { "Mason City": 250, "Des Moines": 1000 } },
  { "_id": 3, "name": "Romancing the Rock", "inventory": { "Mason City": 250, "Ames": 500 } },
  { "_id": 4, "name": "Bravemind", "inventory": { "Mason City": 250, "Des Moines": 1000, "Ames": 500 } }
]);
```

**Beispiel für eine Abfrage**

```
db.videos.aggregate([
  { $project: { name: 1, videos: { $objectToArray: "$inventory" } } },
  { $project: { name: 1, inventory: { $arrayToObject: "$videos" } } }
]);
```

**Ausgabe**

```
{ "_id" : 1, "name" : "Live Soft", "inventory" : { "Des Moines" : 1000, "Ames" : 500 } }
{ "_id" : 2, "name" : "Top Pilot", "inventory" : { "Mason City" : 250, "Des Moines" : 1000 } }
{ "_id" : 3, "name" : "Romancing the Rock", "inventory" : { "Mason City" : 250, "Ames" : 500 } }
{ "_id" : 4, "name" : "Bravemind", "inventory" : { "Mason City" : 250, "Des Moines" : 1000, "Ames" : 500 } }
```

In diesem Beispiel wird der `$objectToArray` Operator verwendet, um das `inventory` Objekt in ein Array von Schlüssel-Wert-Paaren umzuwandeln. Der `$arrayToObject` Operator wird dann verwendet, um das Array wieder in ein Dokument zu konvertieren, wodurch die ursprüngliche Objektstruktur wiederhergestellt wird.

## Codebeispiele
<a name="arrayToObject-code"></a>

Um ein Codebeispiel für die Verwendung des `$arrayToObject` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('videos');

  const result = await collection.aggregate([
    { $project: { name: 1, videos: { $objectToArray: '$inventory' } } },
    { $project: { name: 1, inventory: { $arrayToObject: '$videos' } } }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['videos']

    result = list(collection.aggregate([
        { '$project': { 'name': 1, 'videos': { '$objectToArray': '$inventory' } } },
        { '$project': { 'name': 1, 'inventory': { '$arrayToObject': '$videos' } } }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1avg
<a name="avg"></a>

Der `$avg` Aggregationsoperator in Amazon DocumentDB berechnet den Durchschnittswert des angegebenen Ausdrucks für die Dokumente, die in die Phase eingegeben werden. Dieser Operator ist nützlich, um den Durchschnitt eines numerischen Felds oder Ausdrucks in einer Reihe von Dokumenten zu berechnen.

**Parameter**
+ `expression`: Der Ausdruck, der zur Berechnung des Durchschnitts verwendet werden soll. Dies kann ein Feldpfad (z. B.`"$field"`) oder ein Ausdruck (z. B.`{ $multiply: ["$field1", "$field2"] }`) sein.

## Beispiel (MongoDB Shell)
<a name="avg-examples"></a>

Das folgende Beispiel zeigt, wie der `$avg` Operator verwendet wird, um die durchschnittliche Punktzahl für eine Reihe von Studentendokumenten zu berechnen.

**Erstellen Sie Beispieldokumente**

```
db.students.insertMany([
  { name: "John", score: 85 },
  { name: "Jane", score: 92 },
  { name: "Bob", score: 78 },
  { name: "Alice", score: 90 }
]);
```

**Beispiel für eine Abfrage**

```
db.students.aggregate([
  { $group: { 
    _id: null,
    avgScore: { $avg: "$score" }
  }}
]);
```

**Ausgabe**

```
[
  {
    "_id": null,
    "avgScore": 86.25
  }
]
```

## Codebeispiele
<a name="avg-code"></a>

Um ein Codebeispiel für die Verwendung des `$avg` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function calculateAvgScore() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const result = await db.collection('students').aggregate([
    { $group: {
      _id: null,
      avgScore: { $avg: '$score' }
    }}
  ]).toArray();
  console.log(result);
  await client.close();
}

calculateAvgScore();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def calculate_avg_score():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    result = list(db.students.aggregate([
        { '$group': {
            '_id': None,
            'avgScore': { '$avg': '$score' }
        }}
    ]))
    print(result)
    client.close()

calculate_avg_score()
```

------

# \$1bucket
<a name="bucket"></a>

Neu ab Version 8.0

Wird von Elastic Cluster nicht unterstützt.

Die `$bucket` Aggregationsphase in Amazon DocumentDB ermöglicht es Ihnen, Eingabedokumente auf der Grundlage eines bestimmten Ausdrucks und der Bucket-Grenzen in Buckets zu gruppieren. Dies kann nützlich sein, um Daten zu analysieren, die in bestimmte Wertebereiche oder Kategorien fallen.

**Parameter**
+ `groupBy`(erforderlich): Der Ausdruck, der den Wert angibt, nach dem gruppiert werden soll.
+ `boundaries`(erforderlich): Ein Array mit doppelten Werten, die die Bucket-Grenzen definieren. Dokumente werden Buckets auf der Grundlage des `groupBy` Ausdruckswerts zugewiesen, der innerhalb der angegebenen Grenzen liegt.
+ `default`(optional): Ein Literalwert, der für Dokumente ausgegeben wird, deren `groupBy` Ausdruckswert unter keine der angegebenen Grenzen fällt.
+ `output`(optional): Ein Objekt, das die Informationen angibt, die für jeden Bucket ausgegeben werden sollen. Sie können Akkumulatoroperatoren wie`$sum`,, und verwenden `$avg``$min`, `$max` um Aggregationen für jeden Bucket zu berechnen.

## Beispiel (MongoDB Shell)
<a name="bucket-examples"></a>

Das folgende Beispiel zeigt, wie die `$bucket` Phase verwendet wird, um Verkaufsdaten nach Preisklassen zu gruppieren.

**Erstellen Sie Beispieldokumente**

```
db.sales.insertMany([
  { item: "abc", price: 10, quantity: 2, date: new Date("2020-09-01") },
  { item: "def", price: 20, quantity: 1, date: new Date("2020-10-01") },
  { item: "ghi", price: 5, quantity: 3, date: new Date("2020-11-01") },
  { item: "jkl", price: 15, quantity: 2, date: new Date("2020-12-01") },
  { item: "mno", price: 25, quantity: 1, date: new Date("2021-01-01") }
]);
```

**Beispiel für eine Abfrage**

```
db.sales.aggregate([
  {
    $bucket: {
      groupBy: "$price",
      boundaries: [0, 10, 20, 30],
      default: "Other",
      output: {
        "count": { $sum: 1 },
        "totalQuantity": { $sum: "$quantity" }
      }
    }
  },
  {
    $sort: { _id: 1 }
  }
])
```

**Ausgabe**

```
[
  { _id: 0, count: 1, totalQuantity: 3 },
  { _id: 10, count: 2, totalQuantity: 4 },
  { _id: 20, count: 2, totalQuantity: 2 }
]
```

## Codebeispiele
<a name="bucket-code"></a>

Um ein Codebeispiel für die Verwendung des `$bucket` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const sales = db.collection('sales');

  const result = await sales.aggregate([
    {
      $bucket: {
        groupBy: "$price",
        boundaries: [0, 10, 20, 30],
        default: "Other",
        output: {
          "count": { $sum: 1 },
          "totalQuantity": { $sum: "$quantity" }
        }
      }
    },
    {
      $sort: { _id: 1 }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&lsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    sales = db['sales']

    result = list(sales.aggregate([
        {
            '$bucket': {
                'groupBy': '$price',
                'boundaries': [0, 10, 20, 30],
                'default': 'Other',
                'output': {
                    'count': {'$sum': 1},
                    'totalQuantity': {'$sum': '$quantity'}
                }
            }
        },
        {
            "$sort": { "_id": 1 }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1ceil
<a name="ceil"></a>

Neu ab Version 4.0

Der `$ceil` Operator in Amazon DocumentDB rundet wie in MongoDB eine Zahl auf die nächste Ganzzahl auf. Dies ist nützlich, wenn Sie mathematische Operationen an numerischen Feldern ausführen und sicherstellen müssen, dass das Ergebnis eine ganze Zahl ist.

**Parameter**
+ `expression`: Der numerische Ausdruck, der aufgerundet werden soll.

## Beispiel (MongoDB Shell)
<a name="ceil-examples"></a>

Dieses Beispiel zeigt, wie der `$ceil` Operator verwendet wird, um ein numerisches Feld aufzurunden.

**Erstellen Sie Beispieldokumente**

```
db.numbers.insertMany([
  { "_id": 1, "value": 3.14 },
  { "_id": 2, "value": -2.7 },
  { "_id": 3, "value": 0 }
])
```

**Beispiel für eine Abfrage**

```
db.numbers.aggregate([
  { $project: {
    "roundedUp": { $ceil: "$value" }
  }}
])
```

**Ausgabe**

```
{ "_id": 1, "roundedUp": 4 }
{ "_id": 2, "roundedUp": -2 }
{ "_id": 3, "roundedUp": 0 }
```

## Codebeispiele
<a name="ceil-code"></a>

Um ein Codebeispiel für die Verwendung des `$ceil` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('numbers');

  const result = await collection.aggregate([
    { $project: {
      "roundedUp": { $ceil: "$value" }
    }}
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.numbers

    result = list(collection.aggregate([
        { '$project': {
            "roundedUp": { '$ceil': "$value" }
        }}
    ]))

    print(result)
    client.close()

example()
```

------

# \$1 Stream ändern
<a name="changeStream"></a>

Wird von Elastic Cluster nicht unterstützt.

In der `$changeStream` Aggregationsphase wird ein Change-Stream-Cursor geöffnet, um Änderungen an einer Sammlung in Echtzeit zu überwachen. Sie gibt Änderungsereignisdokumente zurück, wenn Einfüge-, Aktualisierungs-, Ersetzungs- oder Löschvorgänge ausgeführt werden.

**Parameter**
+ `fullDocument`: Gibt an, ob bei Aktualisierungsvorgängen das vollständige Dokument zurückgegeben werden soll. Die Optionen lauten `default` oder `updateLookup`.
+ `resumeAfter`: Optional. Setzen Sie das Token fort, um ab einem bestimmten Punkt im Change-Stream fortzufahren.
+ `startAtOperationTime`: Optional. Zeitstempel, ab dem der Change-Stream gestartet werden soll.
+ `allChangesForCluster`: Optional. Boolescher Wert: Wann`true`, überwacht alle Änderungen im gesamten Cluster (für die Admin-Datenbank). Wenn `false` (Standard), wird nur die angegebene Sammlung überwacht.

## Beispiel (MongoDB Shell)
<a name="changeStream-examples"></a>

Das folgende Beispiel zeigt, wie die `$changeStream` Bühne verwendet wird, um Änderungen an einer Sammlung zu überwachen.

**Beispiel für eine Abfrage**

```
// Open change stream first
const changeStream = db.inventory.aggregate([
  { $changeStream: { fullDocument: "updateLookup" } }
]);

// In another session, insert a document
db.inventory.insertOne({ _id: 1, item: "Widget", qty: 10 });

// Back in the first session, read the change event
if (changeStream.hasNext()) {
  print(tojson(changeStream.next()));
}
```

**Ausgabe**

```
{
  _id: { _data: '...' },
  operationType: 'insert',
  clusterTime: Timestamp(1, 1234567890),
  fullDocument: { _id: 1, item: 'Widget', qty: 10 },
  ns: { db: 'test', coll: 'inventory' },
  documentKey: { _id: 1 }
}
```

## Codebeispiele
<a name="changeStream-code"></a>

Um ein Codebeispiel für die Verwendung der `$changeStream` Aggregationsphase anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('inventory');

  // Open change stream
  const changeStream = collection.watch([]);

  changeStream.on('change', (change) => {
    console.log('Change detected:', change);
  });

  // Simulate insert in another operation
  setTimeout(async () => {
    await collection.insertOne({ _id: 1, item: 'Widget', qty: 10 });
  }, 1000);

  // Keep connection open to receive changes
  // In production, handle cleanup appropriately
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient
import threading
import time

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['inventory']

    # Open change stream
    change_stream = collection.watch([])

    # Insert document in separate thread after delay
    def insert_doc():
        time.sleep(1)
        collection.insert_one({'_id': 1, 'item': 'Widget', 'qty': 10})

    threading.Thread(target=insert_doc).start()

    # Watch for changes
    for change in change_stream:
        print('Change detected:', change)
        break  # Exit after first change

    client.close()

example()
```

------

# \$1cmp
<a name="cmp"></a>

Der `$cmp` Operator in Amazon DocumentDB wird verwendet, um zwei Werte zu vergleichen und einen Ganzzahlwert zurückzugeben, der ihre relative Reihenfolge angibt. Es ist ein Vergleichsoperator, der zwei Ausdrücke vergleicht und einen Ganzzahlwert von -1, 0 oder 1 zurückgibt, je nachdem, ob der erste Wert kleiner, gleich oder größer als der zweite Wert ist.

**Parameter**
+ `expression1`: Der erste Ausdruck, der verglichen werden soll.
+ `expression2`: Der zweite zu vergleichende Ausdruck.

## Beispiel (MongoDB Shell)
<a name="cmp-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$cmp` Operators, um zwei numerische Werte zu vergleichen.

**Erstellen Sie Beispieldokumente**

```
db.collection.insertMany([
  { _id: 1, value1: 10, value2: 20 },
  { _id: 2, value1: 15, value2: 15 },
  { _id: 3, value1: 20, value2: 10 }
]);
```

**Beispiel für eine Abfrage**

```
db.collection.find({
  $expr: {
    $cmp: ["$value1", "$value2"]
  }
})
```

**Ausgabe**

```
[
  { "_id" : 1, "value1" : 10, "value2" : 20 },
  { "_id" : 3, "value1" : 20, "value2" : 10 }
]
```

In diesem Beispiel vergleicht der `$cmp` Operator die `value2` Felder `value1` und für jedes Dokument. Das Ergebnis ist:

```
- `$cmp: ["$value1", "$value2"]` returns -1 for the first document (10 < 20), 0 for the second document (15 = 15), and 1 for the third document (20 > 10).
```

## Codebeispiele
<a name="cmp-code"></a>

Um ein Codebeispiel für die Verwendung des `$cmp` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

Hier ist ein Beispiel für die Verwendung des `$cmp` Operators in einer Node.js -Anwendung mit dem `mongodb` Treiber:

```
const { MongoClient } = require('mongodb');

const client = new MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');

async function main() {
  await client.connect();
  const db = client.db('test');
  const collection = db.collection('mycollection');

  // Insert sample documents
  await collection.insertMany([
    { _id: 1, value1: 10, value2: 20 },
    { _id: 2, value1: 15, value2: 15 },
    { _id: 3, value1: 20, value2: 10 }
  ]);

  // Query using $cmp operator
  const result = await collection.find({
    $expr: {
      $cmp: ['$value1', '$value2']
    }
  }).toArray();

  console.log(result);

  await client.close();
}

main();
```

------
#### [ Python ]

Hier ist ein Beispiel für die Verwendung des `$cmp` Operators in einer Python-Anwendung mit dem `pymongo` Treiber:

```
from pymongo import MongoClient

client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
collection = db['mycollection']

# Insert sample documents
collection.insert_many([
    {'_id': 1, 'value1': 10, 'value2': 20},
    {'_id': 2, 'value1': 15, 'value2': 15},
    {'_id': 3, 'value1': 20, 'value2': 10}
])

# Query using $cmp operator
result = list(collection.find({
    '$expr': {
        '$cmp': ['$value1', '$value2']
    }
}))

print(result)

client.close()
```

Die Ausgabe der Beispiele Node.js und Python entspricht der des MongoDB-Shell-Beispiels:

```
[
  { "_id" : 1, "value1" : 10, "value2" : 20 },
  { "_id" : 2, "value1" : 15, "value2" : 15 },
  { "_id" : 3, "value1" : 20, "value2" : 10 }
]
```

------

# \$1collStats
<a name="collStats"></a>

Neu ab Version 4.0

Die `$collStats` Aggregationsphase in Amazon DocumentDB bietet Statistiken über die angegebene Sammlung, ähnlich dem `db.collection.stats()` Befehl in der MongoDB-Shell. In dieser Phase können Informationen über die Sammlung abgerufen werden, z. B. die Anzahl der Dokumente, die Gesamtgröße der Sammlung und verschiedene Leistungskennzahlen.

**Parameter**
+ `latencyStats`: (optional) Ein Dokument, das die Optionen für die Erfassung von Latenzstatistiken spezifiziert. Dieser Parameter wird in Amazon DocumentDB nicht unterstützt.
+ `recordStats`: (optional) Ein Dokument, das die Optionen für die Erfassung von Datensatzstatistiken festlegt. Dieser Parameter wird in Amazon DocumentDB nicht unterstützt.
+ `queryExecStats`: (optional) Ein Dokument, das die Optionen für die Erfassung von Statistiken zur Abfrageausführung spezifiziert. Dieser Parameter wird in Amazon DocumentDB nicht unterstützt.

## Beispiel (MongoDB Shell)
<a name="collStats-examples"></a>

Das folgende Beispiel zeigt, wie die `$collStats` Aggregationsphase verwendet wird, um Statistiken über eine `test` in der `db` Datenbank benannte Sammlung abzurufen.

**Erstellen Sie Beispieldokumente**

```
db.test.insertMany([
  { "name": "John", "age": 30 },
  { "name": "Jane", "age": 25 },
  { "name": "Bob", "age": 35 }
]);
```

**Beispiel für eine Abfrage**

```
db.test.aggregate([
  { $collStats: {} }
]);
```

**Ausgabe**

```
{
  "ns" : "db.test",
  "count" : 3,
  "size" : 87,
  "avgObjSize" : 29,
  "storageSize" : 40960,
  "capped" : false,
  "nindexes" : 1,
  "totalIndexSize" : 8192,
  "indexSizes" : {
    "_id_" : 8192
  },
  "collScans" : 0,
  "idxScans" : 0,
  "opCounter" : {
    "numDocsIns" : 3,
    "numDocsUpd" : 0,
    "numDocsDel" : 0
  },
  "cacheStats" : {
    "collBlksHit" : 0,
    "collBlksRead" : 0,
    "collHitRatio" : 0,
    "idxBlksHit" : 0,
    "idxBlksRead" : 0,
    "idxHitRatio" : 0
  },
  "lastReset" : "2023-04-11T12:00:00Z",
  "ok" : 1,
  "operationTime" : Timestamp(1681206000, 1)
}
```

## Codebeispiele
<a name="collStats-code"></a>

Um ein Codebeispiel für die Verwendung des `$collStats` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

Hier ist ein Beispiel für die Verwendung der `$collStats` Aggregationsphase in einer Node.js -Anwendung mit dem offiziellen MongoDB Node.js -Treiber:

```
const { MongoClient } = require('mongodb');

async function runCollStatsExample() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('db');
  const collection = db.collection('test');

  const result = await collection.aggregate([
    { $collStats: {} }
  ]).toArray();

  console.log(result);

  await client.close();
}

runCollStatsExample();
```

------
#### [ Python ]

Hier ist ein Beispiel für die Verwendung der `$collStats` Aggregationsphase in einer Python-Anwendung mithilfe des PyMongo Treibers:

```
from pymongo import MongoClient

def run_coll_stats_example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['db']
    collection = db['test']

    result = list(collection.aggregate([
        { '$collStats': {} }
    ]))

    print(result)

    client.close()

run_coll_stats_example()
```

------

# \$1concat
<a name="concat"></a>

Der `$concat` Aggregationsoperator in Amazon DocumentDB verkettet (oder kombiniert) mehrere Zeichenketten in einem Dokument, um eine einzige Zeichenfolge zu erzeugen, die an die Anwendung zurückgegeben werden kann. Dies reduziert den Arbeitsaufwand in der Anwendung, da die Bearbeitung der Zeichenfolge auf Datenbankebene erfolgt.

**Parameter**
+ `expression1`: Die erste Zeichenfolge, die verkettet werden soll.
+ `expression2`: Die zweite Zeichenfolge, die verkettet werden soll.
+ `...`: Zusätzliche Zeichenketten zum Verketten (optional).

## Beispiel (MongoDB Shell)
<a name="concat-examples"></a>

In diesem Beispiel verketten wir die Vor- und Nachnamen der Benutzer, um den vollständigen Namen jeder Person zu erhalten.

**Erstellen Sie Beispieldokumente**

```
db.people.insertMany([
  { "_id":1, "first_name":"Jane", "last_name":"Doe", "DOB":"2/1/1999", "Desk": "MSP102-MN"},
  { "_id":2, "first_name":"John", "last_name":"Doe", "DOB":"12/21/1992", "Desk": "DSM301-IA"},
  { "_id":3, "first_name":"Steve", "last_name":"Smith", "DOB":"3/21/1981", "Desk":"MKE233-WI"}
])
```

**Beispiel für eine Abfrage**

```
db.people.aggregate([
  { $project: { full_name: { $concat: [ "$first_name", " ", "$last_name"] } } }
])
```

**Ausgabe**

```
{ "_id" : 1, "full_name" : "Jane Doe" }
{ "_id" : 2, "full_name" : "John Doe" }
{ "_id" : 3, "full_name" : "Steve Smith" }
```

## Codebeispiele
<a name="concat-code"></a>

Um ein Codebeispiel für die Verwendung des `$concat` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function concatenateNames() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');

  const result = await db.collection('people').aggregate([
    { $project: { full_name: { $concat: [ "$first_name", " ", "$last_name"] } } }
  ]).toArray();

  console.log(result);

  await client.close();
}

concatenateNames();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def concatenate_names():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']

    result = list(db.people.aggregate([
        { '$project': { 'full_name': { '$concat': [ '$first_name', ' ', '$last_name' ] } } }
    ]))

    print(result)

    client.close()

concatenate_names()
```

------

# \$1concatArrays
<a name="concatArrays"></a>

Der `$concatArrays` Aggregationsoperator in Amazon DocumentDB wird verwendet, um zwei oder mehr Arrays zu einem einzigen Array zu verketten. Dies kann nützlich sein, wenn Sie mehrere Datenarrays zur weiteren Verarbeitung oder Analyse zu einem einzigen Array kombinieren müssen.

**Parameter**
+ `array1`: Das erste Array, das verkettet werden soll.
+ `array2`: Das zweite Array, das verkettet werden soll.
+ `[array3, ...]`: (optional) Zusätzliche Arrays, die verkettet werden sollen.

## Beispiel (MongoDB Shell)
<a name="concatArrays-examples"></a>

Das folgende Beispiel zeigt, wie der `$concatArrays` Operator verwendet wird, um zwei Arrays zu einem einzigen Array zu kombinieren.

**Erstellen Sie Beispieldokumente**

```
db.collection.insertMany([
  {
    "_id": 1,
    "name": "John Doe",
    "hobbies": ["reading", "swimming"],
    "skills": ["programming", "design"]
  },
  {
    "_id": 2,
    "name": "Jane Smith",
    "hobbies": ["hiking", "cooking"],
    "skills": ["marketing", "analysis"]
  }
]);
```

**Beispiel für eine Abfrage**

```
db.collection.aggregate([
  {
    $project: {
      _id: 0,
      name: 1,
      all_activities: { $concatArrays: ["$hobbies", "$skills"] }
    }
  }
]);
```

**Ausgabe**

```
[
  {
    "name": "John Doe",
    "all_activities": [
      "reading",
      "swimming",
      "programming",
      "design"
    ]
  },
  {
    "name": "Jane Smith",
    "all_activities": [
      "hiking",
      "cooking",
      "marketing",
      "analysis"
    ]
  }
]
```

## Codebeispiele
<a name="concatArrays-code"></a>

Um ein Codebeispiel für die Verwendung des `$concatArrays` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('mydb');
  const collection = db.collection('mycollection');

  const result = await collection.aggregate([
    {
      $project: {
        _id: 0,
        name: 1,
        all_activities: { $concatArrays: ['$hobbies', '$skills'] }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['mydb']
    collection = db['mycollection']

    result = list(collection.aggregate([
        {
            '$project': {
                '_id': 0,
                'name': 1,
                'all_activities': { '$concatArrays': ['$hobbies', '$skills'] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1cond
<a name="cond"></a>

Der `$cond` Operator in Amazon DocumentDB wird verwendet, um einen bedingten Ausdruck auszuwerten und einen von zwei möglichen Ergebnisausdrücken zurückzugeben.

**Parameter**
+ `if`: Der boolesche Ausdruck, der ausgewertet werden soll.
+ `then`: Der Ausdruck, der zurückgegeben werden soll, wenn der `if` Ausdruck wahr ist.
+ `else`: Der Ausdruck, der zurückgegeben werden soll, wenn der `if` Ausdruck falsch ist.

## Beispiel (MongoDB Shell)
<a name="cond-examples"></a>

Das folgende Beispiel zeigt, wie der `$cond` Operator verwendet wird, um einen Wert zurückzugeben, der auf dem Alter einer Person basiert.

**Erstellen Sie Beispieldokumente**

```
db.people.insertMany([
  { _id: 1, name: "John Doe", age: 35 },
  { _id: 2, name: "Jane Doe", age: 25 },
  { _id: 3, name: "Bob Smith", age: 65 }
]);
```

**Beispiel für eine Abfrage**

```
db.people.aggregate([
  {
    $project: {
      name: 1,
      ageGroup: {
        $cond: {
          if: { $lt: ["$age", 30] },
          then: "young",
          else: {
            $cond: {
              if: { $lt: ["$age", 65] },
              then: "middle-aged",
              else: "elderly"
            }
          }
        }
      }
    }
  }
])
```

**Ausgabe**

```
[
  { "_id" : 1, "name" : "John Doe", "ageGroup" : "middle-aged" },
  { "_id" : 2, "name" : "Jane Doe", "ageGroup" : "young" },
  { "_id" : 3, "name" : "Bob Smith", "ageGroup" : "elderly" }
]
```

## Codebeispiele
<a name="cond-code"></a>

Um ein Codebeispiel für die Verwendung des `$cond` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('people');

  const result = await collection.aggregate([
    { $project: {
        name: 1,
        ageGroup: {
            $cond: {
                if: { $lt: ["$age", 30] },
                then: "young",
                else: {
                    $cond: {
                        if: { $lt: ["$age", 65] },
                        then: "middle-aged",
                        else: "elderly"
                    }
                }
            }
        }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient


def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.people

    result = list(collection.aggregate([
        {
            '$project': {
                'name': 1,
                'ageGroup': {
                    '$cond': {
                        'if': { '$lt': ["$age", 30]},
                        'then': "young",
                        'else': {
                            '$cond': {
                                'if': { '$lt': ["$age", 65]},
                                'then': "middle-aged",
                                'else': "elderly"
                            }
                        }
                    }
                }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1 konvertieren
<a name="convert"></a>

Neu ab Version 4.0

Der `$convert` Operator in Amazon DocumentDB wird verwendet, um einen Wert von einem Datentyp in einen anderen zu konvertieren. Dieser Operator ist nützlich, wenn Sie Operationen mit Daten verschiedener Typen ausführen müssen, z. B. die Konvertierung einer Zeichenfolge in eine Zahl oder eines Datums in einen Zeitstempel.

**Parameter**
+ `to`: Der Zieldatentyp, in den der Wert konvertiert werden soll. Unterstützte Werte sind `"string"`, `"double"`, `"long"`, `"int"`, `"date"` und `"boolean"`.
+ `from`: Der aktuelle Datentyp des Werts. Falls nicht angegeben, versucht Amazon DocumentDB, den Datentyp automatisch zu erkennen.
+ `onError`: (optional) Der Wert, der zurückgegeben werden soll, wenn die Konvertierung fehlschlägt. Kann ein bestimmter Wert oder einer der folgenden Sonderwerte sein:`"null"`,`"zerofill"`, oder`"error"`.
+ `onNull`: (optional) Der Wert, der zurückgegeben werden soll, wenn der Eingabewert`null`. Kann ein bestimmter Wert oder einer der folgenden Sonderwerte sein:`"null"`,`"zerofill"`, oder`"error"`.

## Beispiel (MongoDB Shell)
<a name="convert-examples"></a>

Das folgende Beispiel zeigt die Konvertierung eines Zeichenkettenwerts in ein Datum mithilfe des `$convert` Operators.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { _id: 1, name: "John Doe", joinedOn: "2022-01-01" },
  { _id: 2, name: "Jane Smith", joinedOn: "2023-02-15" },
  { _id: 3, name: "Bob Johnson", joinedOn: "invalid date" }
]);
```

**Beispiel für eine Abfrage**

```
db.users.aggregate([
  {
    $project: {
      _id: 1,
      name: 1,
      joinedOn: {
        $convert: {
          input: "$joinedOn",
          to: "date",
          onError: "null",
          onNull: "null"
        }
      }
    }
  }
])
```

**Ausgabe**

```
[
  { "_id" : 1, "name" : "John Doe", "joinedOn" : ISODate("2022-01-01T00:00:00Z") },
  { "_id" : 2, "name" : "Jane Smith", "joinedOn" : ISODate("2023-02-15T00:00:00Z") },
  { "_id" : 3, "name" : "Bob Johnson", "joinedOn" : null }
]
```

## Codebeispiele
<a name="convert-code"></a>

Um ein Codebeispiel für die Verwendung des `$convert` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require("mongodb");

async function example() {
  const client = await MongoClient.connect("mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false");
  const db = client.db("test");
  const users = db.collection("users");

  const results = await users.aggregate([
    {
      $project: {
        _id: 1,
        name: 1,
        joinedOn: {
          $convert: {
            input: "$joinedOn",
            to: "date",
            onError: "null",
            onNull: "null"
          }
        }
      }
    }
  ]).toArray();

  console.log(results);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient("mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false")
    db = client["test"]
    users = db["users"]

    results = list(users.aggregate([
        {
            "$project": {
                "_id": 1,
                "name": 1,
                "joinedOn": {
                    "$convert": {
                        "input": "$joinedOn",
                        "to": "date",
                        "onError": "null",
                        "onNull": "null"
                    }
                }
            }
        }
    ]))

    print(results)
    client.close()

example()
```

------

# \$1count
<a name="count"></a>

Die `$count` Aggregationsphase in Amazon DocumentDB wird verwendet, um die Anzahl der Dokumente zu zählen, die in die Phase gelangen. Sie wird häufig als letzte Phase in einer Aggregationspipeline verwendet, um die Gesamtzahl der Dokumente zurückzugeben, die den vorherigen Phasen entsprechen.

**Parameter**
+ `field`: Das zu zählende Feld. Dieser Parameter ist optional. Wenn er nicht angegeben wird, zählt die Phase die Gesamtzahl der Eingabedokumente.

## Beispiel (MongoDB Shell)
<a name="count-examples"></a>

Das folgende Beispiel zeigt, wie der `$count` Schritt verwendet wird, um die Gesamtzahl der Dokumente in einer Sammlung abzurufen.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { name: "John", age: 30 },
  { name: "Jane", age: 25 },
  { name: "Bob", age: 35 },
  { name: "Alice", age: 28 }
]);
```

**Beispiel für eine Abfrage**

```
db.users.aggregate([
  { $count: "total" }
]);
```

**Ausgabe**

```
{ "total" : 4 }
```

Das Beispiel aggregiert die `users` Sammlung und verwendet die `$count` Phase, um die Gesamtzahl der Dokumente zu zählen.

## Codebeispiele
<a name="count-code"></a>

Um ein Codebeispiel für die Verwendung des `$count` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function countDocuments() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('mydb');
  const collection = db.collection('users');

  const result = await collection.aggregate([
    { $count: "total" }
  ]).toArray();

  console.log(result[0].total);

  await client.close();
}

countDocuments();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def count_documents():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['mydb']
    collection = db['users']

    result = list(collection.aggregate([
        { '$count': "total" }
    ]))

    print(result[0]['total'])

    client.close()

count_documents()
```

------

# \$1currentOp
<a name="currentOp"></a>

Die `$currentOp` Aggregationsphase gibt Informationen über aktuell ausgeführte Operationen in der Datenbank zurück. Diese Phase ist nützlich für die Überwachung aktiver Abfragen und Operationen in einer Aggregationspipeline.

**Parameter**
+ `allUsers`(optional): Wenn auf gesetzt`true`, werden Operationen für alle Benutzer zurückgegeben. Der Standardwert ist `false`.
+ `idleConnections`(optional): Wenn auf gesetzt`true`, schließt dies inaktive Verbindungen ein. Der Standardwert ist `false`.
+ `idleCursors`(optional): Wenn auf gesetzt`true`, enthält dies Informationen über Cursor im Leerlauf. Der Standardwert ist `false`.
+ `idleSessions`(optional): Wenn auf gesetzt`true`, enthält es Informationen über inaktive Sitzungen. Der Standardwert ist `true`.
+ `localOps`(optional): Wenn auf gesetzt`true`, schließt dies lokale Operationen ein. Der Standardwert ist `false`.

## Beispiel (MongoDB Shell)
<a name="currentOp-examples"></a>

Das folgende Beispiel zeigt, wie die `$currentOp` Aggregationsphase verwendet wird, um Informationen über aktive Lesevorgänge abzurufen.

**Beispiel für eine Abfrage**

```
db.aggregate([
  { $currentOp: { allUsers: true, idleConnections: false } },
  { $match: { op: "query" } }
])
```

**Ausgabe**

```
[
  {
    "opid": "12345",
    "active": true,
    "op": "query",
    "ns": "test.users",
    "secs_running": 2
  }
]
```

## Codebeispiele
<a name="currentOp-code"></a>

Um ein Codebeispiel für die Verwendung des `$currentOp` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('admin');

  const result = await db.aggregate([
    { $currentOp: { allUsers: true, idleConnections: false } },
    { $match: { op: "query" } }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['admin']

    result = list(db.aggregate([
        { '$currentOp': { 'allUsers': True, 'idleConnections': False } },
        { '$match': { 'op': 'query' } }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1DateAdd
<a name="dateAdd"></a>

Neu ab Version 5.0

Mit dem `$dateAdd` Aggregationsoperator in Amazon DocumentDB können Sie einem Datums- und Uhrzeitwert eine Dauer hinzufügen.

**Parameter**
+ `date`: Ein Datums- und Uhrzeitwert, dem eine Dauer hinzugefügt werden soll.
+ `duration`: Die Dauer, die dem `date` Wert hinzugefügt werden soll. Dies kann als Objekt mit Schlüsseln für`years`,,`months`, `weeks` `days` `hours``minutes`, und angegeben `seconds` werden.
+ `timezone`: (optional) Die Zeitzone, die beim Hinzufügen des Datums verwendet werden soll. Falls nicht angegeben, wird die Standardzeitzone des Amazon DocumentDB-Clusters verwendet.

## Beispiel (MongoDB Shell)
<a name="dateAdd-examples"></a>

Das folgende Beispiel zeigt, wie der `$dateAdd` Operator verwendet wird, um einem Datum 2 Tage und 12 Stunden hinzuzufügen.

**Erstellen Sie Beispieldokumente**

```
db.events.insertMany([
  { _id: 1, eventDate: ISODate("2023-04-01T10:00:00Z") },
  { _id: 2, eventDate: ISODate("2023-04-02T12:00:00Z") },
  { _id: 3, eventDate: ISODate("2023-04-03T14:00:00Z") }
]);
```

**Beispiel für eine Abfrage**

```
db.events.aggregate([
  {
    $project: {
      _id: 1,
      eventDate: 1,
      eventDatePlustwodaysandtwelvehours: {
        $dateAdd: {
          startDate: {
            $dateAdd: { 
              startDate: "$eventDate",
              unit: "day",
              amount: 2
            }
          },
          unit: "hour",
          amount: 12
        }
      }
    }
  }
])
```

**Ausgabe**

```
[
  {
    "_id": 1,
    "eventDate": "2023-04-01T10:00:00Z",
    "eventDatePlustwodaysandtwelvehours": ISODate("2023-04-03T22:00:00Z)"
  },
  {
    "_id": 2,
    "eventDate": "2023-04-02T12:00:00Z",
    "eventDatePlustwodaysandtwelvehours": ISODate("2023-04-05T00:00:00Z)"
  },
  {
    "_id": 3,
    "eventDate": "2023-04-03T14:00:00Z",
    "eventDatePlustwodaysandtwelvehours": ISODate("2023-04-06T02:00:00Z)"
  }
]
```

## Codebeispiele
<a name="dateAdd-code"></a>

Um ein Codebeispiel für die Verwendung des `$dateAdd` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('events');

  const result = await collection.aggregate([
    {
      $project: {
        _id: 1,
        eventDate: 1,
        eventDatePlustwodaysandtwelvehours: {
          $dateAdd: {
            startDate: {
              $dateAdd: {
                startDate: "$eventDate",
                unit: "day",
                amount: 2
              }
            },
            unit: "hour",
            amount: 12
          }
        }
      }
    }
  ]).toArray();

  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient
from bson.date_time import datetime

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['events']

    result = list(collection.aggregate([
        {
            '$project': {
                '_id': 1,
                'eventDate': 1,
                'eventDatePlustwodaysandtwelvehours': {
                    '$dateAdd': {
                        'startDate': {
                            '$dateAdd' : {
                                'startDate': '$eventDate',
                                'unit': 'day',
                                'amount': 2,
                            }
                        },
                        'unit': 'hour',
                        'amount': 12,
                    }
                }
            }
        }
    ]))

    print(result)

    client.close()

example()
```

------

# \$1DateDiff
<a name="dateDiff"></a>

Neu ab Version 5.0

Wird von Elastic Cluster nicht unterstützt.

Der `$dateDiff` Aggregationsoperator berechnet die Differenz zwischen zwei Daten in angegebenen Einheiten. Er gibt die Anzahl der Einheitengrenzen zurück, die zwischen dem Start- und dem Enddatum überschritten wurden.

**Parameter**
+ `startDate`: Der Ausdruck für das Anfangsdatum.
+ `endDate`: Der Ausdruck für das Enddatum.
+ `unit`: Die Zeiteinheit für die Differenz. Unterstützte Einheiten sind `year``quarter`,`month`,`week`,`day`,`hour`,`minute`,`second`, und`millisecond`.

## Beispiel (MongoDB Shell)
<a name="dateDiff-examples"></a>

Das folgende Beispiel zeigt, wie der `$dateDiff` Operator verwendet wird, um die Anzahl der Tage zwischen Auftragserteilung und Lieferung zu berechnen.

**Erstellen Sie Beispieldokumente**

```
db.shipments.insertMany([
  {
    orderId: 1001,
    orderDate: ISODate("2025-01-10T08:00:00Z"),
    deliveryDate: ISODate("2025-01-15T14:30:00Z")
  },
  {
    orderId: 1002,
    orderDate: ISODate("2025-02-05T10:00:00Z"),
    deliveryDate: ISODate("2025-02-12T16:45:00Z")
  }
]);
```

**Beispiel für eine Abfrage**

```
db.shipments.aggregate([
  {
    $project: {
      orderId: 1,
      orderDate: 1,
      deliveryDate: 1,
      daysToDeliver: {
        $dateDiff: {
          startDate: "$orderDate",
          endDate: "$deliveryDate",
          unit: "day"
        }
      }
    }
  }
]);
```

**Ausgabe**

```
[
  {
    _id: ObjectId('6924a5f2d66dcae121d29517'),
    orderId: 1001,
    orderDate: ISODate('2025-01-10T08:00:00.000Z'),
    deliveryDate: ISODate('2025-01-15T14:30:00.000Z'),
    daysToDeliver: 5
  },
  {
    _id: ObjectId('6924a5f2d66dcae121d29518'),
    orderId: 1002,
    orderDate: ISODate('2025-02-05T10:00:00.000Z'),
    deliveryDate: ISODate('2025-02-12T16:45:00.000Z'),
    daysToDeliver: 7
  }
]
```

## Codebeispiele
<a name="dateDiff-code"></a>

Um ein Codebeispiel für die Verwendung des `$dateDiff` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const shipments = db.collection('shipments');
  
  const result = await shipments.aggregate([
    {
      $project: {
        orderId: 1,
        orderDate: 1,
        deliveryDate: 1,
        daysToDeliver: {
          $dateDiff: {
            startDate: "$orderDate",
            endDate: "$deliveryDate",
            unit: "day"
          }
        }
      }
    }
  ]).toArray();
  
  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    shipments = db['shipments']
    
    result = list(shipments.aggregate([
        {
            "$project": {
                "orderId": 1,
                "orderDate": 1,
                "deliveryDate": 1,
                "daysToDeliver": {
                    "$dateDiff": {
                        "startDate": "$orderDate",
                        "endDate": "$deliveryDate",
                        "unit": "day"
                    }
                }
            }
        }
    ]))
    
    print(result)
    client.close()

example()
```

------

# \$1dateFromString
<a name="dateFromString"></a>

Der `$dateFromString` Aggregationsoperator in Amazon DocumentDB ermöglicht es Ihnen, eine Datums- und Uhrzeitzeichenfolge in ein Datumsobjekt zu konvertieren. Dies ist nützlich, wenn Ihre Daten als Zeichenketten gespeichert sind, Sie aber datumsbasierte Operationen mit den Daten durchführen müssen.

**Parameter**
+ `dateString`: Eine Zeichenfolge, die ein Datum und eine Uhrzeit darstellt.
+ `format`: (optional) Eine Zeichenfolge, die das Format von angibt`dateString`. Falls nicht angegeben, versucht Amazon DocumentDB, die Zeichenfolge im ISO-8601-Format zu analysieren.
+ `timezone`: (optional) Eine Zeichenfolge, die die Zeitzone angibt. Falls nicht angegeben, verwendet Amazon DocumentDB die Zeitzone des Servers.
+ `onError`: (optional) Gibt die Aktion an, die ausgeführt werden soll, wenn die Konvertierung fehlschlägt. Mögliche Werte sind `'error'` (der Standardwert, der einen Fehler auslöst), `'null'` (Rückgabe`null`) oder `'replace'` (ersetzt den Wert durch die in der `onErrorMessage` Option angegebene Ersatzzeichenfolge).
+ `onErrorMessage`: (optional) Wenn auf gesetzt `onError` ist`'replace'`, gibt diese Option die Ersatzzeichenfolge an.

## Beispiel (MongoDB Shell)
<a name="dateFromString-examples"></a>

Das folgende Beispiel zeigt, wie Sie `$dateFromString` eine Datumszeichenfolge in Amazon DocumentDB in ein Datumsobjekt konvertieren können.

**Erstellen Sie Beispieldokumente**

```
db.missionLog.insertMany([
{ _id: 1, event: "missionStart", logDate: "2020-03-15T13:41:33"},
{ _id: 2, event: "jumpPoint1", logDate: "2020-03-15T13:45:34"},
{ _id: 3, event: "jumpPoint2", logDate: "2020-03-15T13:48:21"},
{ _id: 4, event: "jumpPoint3", logDate: "2020-03-15T13:52:09"},
{ _id: 5, event: "missionEnd", logDate: "2020-03-15T13:58:44"}
]);
```

**Beispiel für eine Abfrage**

```
db.missionLog.aggregate([
  {
    $project: {
      event: '$event',
      logDate: {
        $dateFromString: {
          dateString: '$logDate'
        }
      }
    }
  }
]);
```

**Ausgabe**

```
[
  {
    "_id": 1,
    "event": "missionStart",
    "logDate": ISODate("2020-03-15T13:41:33Z")
  },
  {
    "_id": 2,
    "event": "jumpPoint1",
    "logDate": ISODate("2020-03-15T13:45:34Z")
  },
  {
    "_id": 3,
    "event": "jumpPoint2",
    "logDate": ISODate("2020-03-15T13:48:21Z")
  },
  {
    "_id": 4,
    "event": "jumpPoint3",
    "logDate": ISODate("2020-03-15T13:52:09Z")
  },
  {
    "_id": 5,
    "event": "missionEnd",
    "logDate": ISODate("2020-03-15T13:58:44Z")
  }
]
```

## Codebeispiele
<a name="dateFromString-code"></a>

Um ein Codebeispiel für die Verwendung des `$dateFromString` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('missionLog');

  const result = await collection.aggregate([
    {
      $project: {
        event: '$event',
        logDate: {
          $dateFromString: {
            dateString: '$logDate'
          }
        }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['missionLog']

    result = list(collection.aggregate([
        {
            '$project': {
                'event': '$event',
                'logDate': {
                    '$dateFromString': {
                        'dateString': '$logDate'
                    }
                }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1DateSubtrahieren
<a name="dateSubtract"></a>

Neu ab Version 5.0

Mit dem `$dateSubtract` Aggregationsoperator in Amazon DocumentDB können Sie eine angegebene Dauer von einem Datumswert subtrahieren.

**Parameter**
+ `date`: Ein Datumsausdruck, der in ein Datum oder einen Zeitstempel aufgelöst wird.
+ `subtrahend`: Ein Ausdruck für die Dauer, der angibt, wie viel Zeit vom Ausdruck abgezogen werden soll. `date`
+ `unit`: Eine Zeichenfolge, die die Zeiteinheit für den `subtrahend` Ausdruck angibt. Unterstützte Einheiten sind „Jahr“, „Quartal“, „Monat“, „Woche“, „Tag“, „Stunde“, „Minute“, „Sekunde“ und „Millisekunde“.

## Beispiel (MongoDB Shell)
<a name="dateSubtract-examples"></a>

Das folgende Beispiel zeigt, wie der `$dateSubtract` Operator verwendet wird, um das Datum vor einem Jahr anhand des aktuellen Datums zu berechnen.

**Erstellen Sie Beispieldokumente**

```
db.events.insertOne({
  eventName: "Player joined",
  eventTime: ISODate("2023-04-01T12:00:00Z")
});
```

**Beispiel für eine Abfrage**

```
db.events.aggregate([
  {
    $project: {
      eventName: 1,
      oneYearAgo: {
        $dateSubtract: {
          startDate: "$eventTime",
          amount: 1,
          unit: "year"
        }
      }
    }
  }
])
```

**Ausgabe**

```
{
  "_id" : ObjectId("64567890abcdef012345678"),
  "eventName" : "Player joined",
  "oneYearAgo" : ISODate("2022-04-01T12:00:00Z")
}
```

## Codebeispiele
<a name="dateSubtract-code"></a>

Um ein Codebeispiel für die Verwendung des `$dateSubtract` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const events = db.collection('events');

  const result = await events.aggregate([
    {
      $project: {
        eventName: 1,
        oneYearAgo: {
          $dateSubtract: {
            startDate: "$eventTime",
            amount: 1,
            unit: "year"
          }
        }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient
from bson.date_time import datetime

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    events = db['events']

    result = list(events.aggregate([
        {
            '$project': {
                'eventName': 1,
                'oneYearAgo': {
                    '$dateSubtract': {
                        'startDate': '$eventTime',
                        'amount': 1,
                        'unit': 'year'
                    }
                }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1dateToString
<a name="dateToString"></a>

Der `$dateToString` Aggregationsoperator in Amazon DocumentDB wird verwendet, um einen Datums- oder Zeitstempelwert in eine Zeichenkettendarstellung zu konvertieren. Dies ist nützlich, wenn Sie Datum und Uhrzeit für die Anzeige oder Weiterverarbeitung auf eine bestimmte Weise formatieren müssen.

**Parameter**
+ `date`: Der Datums- oder Zeitstempelwert, der in eine Zeichenfolge konvertiert werden soll.
+ `format`: Eine Zeichenfolge, die das Format angibt, in dem das Datum dargestellt werden soll. Die Formatzeichenfolge kann verschiedene Formatbezeichner enthalten, z. B. `%Y` für das vierstellige Jahr, `%m` für den zweistelligen Monat, `%d` für den zweistelligen Tag des Monats usw.
+ `timezone`: (optional) Die Zeitzone, die für die Konvertierung verwendet werden soll. Falls nicht angegeben, wird die Zeitzone des Servers verwendet, der den Amazon DocumentDB-Cluster hostet.
+ `onNull`: (optional) Der Wert, der zurückgegeben werden soll, wenn der `date` Parameter. `null`

## Beispiel (MongoDB Shell)
<a name="dateToString-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$dateToString` Operators zur Formatierung des `logDate` Felds der `missionLog` Sammlung.

**Erstellen Sie Beispieldokumente**

```
db.missionLog.insertMany([
  { _id: 1, "event":"missionStart", logDate: new Date("2020-03-15T13:41:33Z") },
  { _id: 2, "event":"jumpPoint1", logDate: new Date("2020-03-15T13:45:34Z") },
  { _id: 3, "event":"jumpPoint2", logDate: new Date("2020-03-15T13:48:21Z") },
  { _id: 4, "event":"jumpPoint3", logDate: new Date("2020-03-15T13:52:09Z") },
  { _id: 5, "event":"missionEnd", logDate: new Date("2020-03-15T13:58:44Z") }
]);
```

**Beispiel für eine Abfrage**

```
db.missionLog.aggregate([
  {
    $project: {
      event: "$event",
      logDateFormatted: {
        $dateToString: {
          format: "%Y-%m-%d %H:%M:%S",
          date: "$logDate"
        }
      }
    }
  }
])
```

**Ausgabe**

```
[
  {
    "_id": 1,
    "event": "missionStart",
    "logDateFormatted": "2020-03-15 13:41:33"
  },
  {
    "_id": 2,
    "event": "jumpPoint1",
    "logDateFormatted": "2020-03-15 13:45:34"
  },
  {
    "_id": 3,
    "event": "jumpPoint2",
    "logDateFormatted": "2020-03-15 13:48:21"
  },
  {
    "_id": 4,
    "event": "jumpPoint3",
    "logDateFormatted": "2020-03-15 13:52:09"
  },
  {
    "_id": 5,
    "event": "missionEnd",
    "logDateFormatted": "2020-03-15 13:58:44"
  }
]
```

## Codebeispiele
<a name="dateToString-code"></a>

Um ein Codebeispiel für die Verwendung des `$dateToString` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

Hier ist ein Beispiel für die Verwendung des `$dateToString` Operators in einer Node.js -Anwendung:

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('missionLog');

  const result = await collection.aggregate([
    {
      $project: {
        event: "$event",
        logDateFormatted: {
          $dateToString: {
            format: "%Y-%m-%d %H:%M:%S",
            date: "$logDate"
          }
        }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

Hier ist ein Beispiel für die Verwendung des `$dateToString` Operators in einer Python-Anwendung:

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['missionLog']

    pipeline = [
        {
            '$project': {
                'event': '$event',
                'logDateFormatted': {
                    '$dateToString': {
                        'format': '%Y-%m-%d %H:%M:%S',
                        'date': '$logDate'
                    }
                }
            }
        }
    ]

    result = list(collection.aggregate(pipeline))
    print(result)
    client.close()

example()
```

------

# \$1DateTrunc
<a name="dateTrunc"></a>

Neu ab Version 8.0

Wird von Elastic Cluster nicht unterstützt.

Der `$dateTrunc` Aggregationsoperator in Amazon DocumentDB kürzt ein Datum auf eine angegebene Einheit.

**Parameter**
+ `date`: Ein Datumsausdruck, der in ein Datum oder einen Zeitstempel aufgelöst wird.
+ `unit`: Eine Zeichenfolge, die die Zeiteinheit für den Subtrahend-Ausdruck angibt. Unterstützte Einheiten sind`year`,`quarter`,`month`,`week`,, `day` `hour``minute`, `second` und. `millisecond`

## Beispiel (MongoDB Shell)
<a name="dateTrunc-examples"></a>

Das folgende Beispiel zeigt, wie der `$dateTrunc` Operator verwendet wird, um ein Datum auf die Stunde zu kürzen.

**Erstellen Sie Beispieldokumente**

```
db.events.insertMany([
  {
    eventName: "Event 1",
    eventTime: ISODate("2025-04-01T12:15:00Z")
  },
  {
    eventName: "Event 2",
    eventTime: ISODate("2025-08-15T14:33:22Z")
  },
]);
```

**Beispiel für eine Abfrage**

```
db.events.aggregate([
  {
    $project: {
      eventName: 1,
      eventTime: 1,
      truncatedToHour: {
        $dateTrunc: {
          date: "$eventTime",
          unit: "hour"
        }
      }
    }
  }
]);
```

**Ausgabe**

```
[
  {
    _id: ObjectId('6924a258d66dcae121d29515'),
    eventName: 'Event 1',
    eventTime: ISODate('2025-04-01T12:15:00.000Z'),
    truncatedToHour: ISODate('2025-04-01T12:00:00.000Z')
  },
  {
    _id: ObjectId('6924a258d66dcae121d29516'),
    eventName: 'Event 2',
    eventTime: ISODate('2025-08-15T14:33:22.000Z'),
    truncatedToHour: ISODate('2025-08-15T14:00:00.000Z')
  }
]
```

## Codebeispiele
<a name="dateTrunc-code"></a>

Um ein Codebeispiel für die Verwendung des `$dateTrunc` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const events = db.collection('events');
  
  const result = await events.aggregate([
    {
      $project: {
        eventName: 1,
        eventTime: 1,
        truncatedToHour: {
          $dateTrunc: {
            date: "$eventTime",
            unit: "hour"
          }
        }
      }
    }
  ]).toArray();
  
  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    events = db['events']
    
    result = list(events.aggregate([
        {
            "$project": {
                "eventName": 1,
                "eventTime": 1,
                "truncatedToHour": {
                    "$dateTrunc": {
                        "date": "$eventTime",
                        "unit": "hour"
                    }
                }
            }
        }
    ]))
    
    print(result)
    client.close()

example()
```

------

# \$1dayOfMonth
<a name="dayOfMonth"></a>

Der `$dayOfMonth` Aggregationsoperator in Amazon DocumentDB ruft den Tag des Monats (von 1 bis 31) für ein bestimmtes Datum ab. Dieser Operator ist nützlich, um den Tag des Monats aus Datumsfeldern in Ihren Dokumenten zu gruppieren, zu filtern oder zu extrahieren.

**Parameter**
+ `date expression`: Der Datumsausdruck kann ein Datumsfeld aus dem Dokument, ein Datumsobjekt oder eine Datumszeichenfolge sein.

## Beispiel (MongoDB Shell)
<a name="dayOfMonth-examples"></a>

Dieses Beispiel zeigt, wie der `$dayOfMonth` Operator verwendet wird, um den Tag des Monats aus einem Datumsfeld im Dokument zu extrahieren.

**Erstellen Sie Beispieldokumente**

```
db.events.insertMany([
  { _id: 1, eventDate: new Date("2022-01-15T12:00:00Z") },
  { _id: 2, eventDate: new Date("2022-02-28T15:30:00Z") },
  { _id: 3, eventDate: new Date("2022-03-01T09:45:00Z") },
  { _id: 4, eventDate: new Date("2022-04-30T23:59:59Z") }
]);
```

**Beispiel für eine Abfrage**

```
db.events.aggregate([
  { $project: {
    eventDay: { $dayOfMonth: "$eventDate" }
  }}
])
```

**Ausgabe**

```
[
  { "_id" : 1, "eventDay" : 15 },
  { "_id" : 2, "eventDay" : 28 },
  { "_id" : 3, "eventDay" : 1 },
  { "_id" : 4, "eventDay" : 30 }
]
```

## Codebeispiele
<a name="dayOfMonth-code"></a>

Um ein Codebeispiel für die Verwendung des `$dayOfMonth` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const events = db.collection('events');

  const result = await events.aggregate([
    { $project: {
      eventDay: { $dayOfMonth: "$eventDate" }
    }}
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.mydatabase
    events = db.events

    result = list(events.aggregate([
        { "$project": {
            "eventDay": { "$dayOfMonth": "$eventDate" }
        }}
    ]))

    print(result)
    client.close()

example()
```

------

# \$1dayOfWeek
<a name="dayOfWeek"></a>

Der `$dayOfWeek` Operator in Amazon DocumentDB extrahiert den Wochentag aus einem bestimmten Datumsfeld. Es gibt den Wochentag als Zahl zwischen 1 (Sonntag) und 7 (Samstag) zurück, was dem Verhalten in MongoDB entspricht.

**Parameter**
+ `date field`: Das Datumsfeld, aus dem der Wochentag extrahiert werden soll.

## Beispiel (MongoDB Shell)
<a name="dayOfWeek-examples"></a>

Dieses Beispiel zeigt, wie der `$dayOfWeek` Operator verwendet wird, um den Wochentag aus dem `date` Feld in der `weather` Sammlung zu extrahieren.

**Erstellen Sie Beispieldokumente**

```
db.weather.insertMany([
  {
    "temperature": 97.5,
    "humidity": 0.60,
    "date": new Date("2023-04-01")
  },
  {
    "temperature": 95.2,
    "humidity": 0.55,
    "date": new Date("2023-04-02")
  },
  {
    "temperature": 92.8,
    "humidity": 0.65,
    "date": new Date("2023-04-03")
  }
]);
```

**Beispiel für eine Abfrage**

```
db.weather.aggregate([
  {
    $project: {
      dayOfWeek: { $dayOfWeek: "$date" }
    }
  }
]).pretty();
```

**Ausgabe**

```
{ "_id" : ObjectId("64272c6663f4f8ce422c2d91"), "dayOfWeek" : 7 }
{ "_id" : ObjectId("64272c6663f4f8ce422c2d92"), "dayOfWeek" : 1 }
{ "_id" : ObjectId("64272c6663f4f8ce422c2d93"), "dayOfWeek" : 2 }
```

## Codebeispiele
<a name="dayOfWeek-code"></a>

Um ein Codebeispiel für die Verwendung des `$dayOfWeek` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('weather');

  const result = await collection.aggregate([
    {
      $project: {
        dayOfWeek: { $dayOfWeek: '$date' }
      }
    }
  ]).toArray();

  console.log(result);

  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def main():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.weather

    result = list(collection.aggregate([
        {
            '$project': {
                'dayOfWeek': { '$dayOfWeek': '$date' }
            }
        }
    ]))

    print(result)

    client.close()

if __name__ == '__main__':
    main()
```

------

# \$1dayOfYear
<a name="dayOfYear"></a>

Der `$dayOfYear` Operator in Amazon DocumentDB gibt den Tag des Jahres für ein Datum als Zahl zwischen 1 und 366 zurück (365 in Nicht-Schaltjahren).

**Parameter**
+ `expression`: Das Datumsfeld oder der Ausdruck, aus dem der Tag des Jahres extrahiert werden soll.

## Beispiel (MongoDB Shell)
<a name="dayOfYear-examples"></a>

Dieses Beispiel zeigt, wie der `$dayOfYear` Operator verwendet wird, um den Tag des Jahres aus einem Datumsfeld in einer Amazon DocumentDB-Sammlung zu extrahieren.

**Erstellen Sie Beispieldokumente**

```
db.weather.insert([
  {
    "temperature" : 97.5,
    "humidity": 0.60,
    "date" : new Date("2023-03-15")
  },
  {
    "temperature" : 82.3,
    "humidity": 0.75,
    "date" : new Date("2023-12-31")
  }
])
```

**Beispiel für eine Abfrage**

```
db.weather.aggregate([
  {
    $project: {
      dayOfYear: { $dayOfYear: "$date" }
    }
  }
]).pretty()
```

**Ausgabe**

```
{ "_id" : ObjectId("642b86fc7d8e07af279bbe63"), "dayOfYear" : 74 }
{ "_id" : ObjectId("642b86fc7d8e07af279bbe64"), "dayOfYear" : 365 }
```

## Codebeispiele
<a name="dayOfYear-code"></a>

Um ein Codebeispiel für die Verwendung des `$dayOfYear` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('weather');

  const result = await collection.aggregate([
    {
      $project: {
        dayOfYear: { $dayOfYear: "$date" }
      }
    }
  ]).toArray();

  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['weather']

    result = list(collection.aggregate([
        {
            '$project': {
                'dayOfYear': { '$dayOfYear': '$date' }
            }
        }
    ]))

    print(result)

    client.close()

example()
```

------

# \$1divide
<a name="divide"></a>

Der `$divide` Operator in der Amazon DocumentDB-Aggregationspipeline wird verwendet, um eine Zahl durch eine andere zu dividieren. Es ist ein nützlicher Operator für die Ausführung mathematischer Operationen an numerischen Feldern in Ihren Dokumenten.

**Parameter**
+ `numerator`: Die Dividende oder die Zahl, die geteilt werden soll.
+ `denominator`: Der Divisor oder die Zahl, durch die dividiert werden soll.

## Beispiel (MongoDB Shell)
<a name="divide-examples"></a>

Dieses Beispiel zeigt, wie der `$divide` Operator verwendet wird, um den Stundensatz für Mitarbeiter auf der Grundlage ihres Jahresgehalts und der Anzahl der Arbeitsstunden pro Jahr zu berechnen.

**Erstellen Sie Beispieldokumente**

```
db.employees.insertMany([
  { _id: 1, name: "John Doe", salary: 80000, hoursPerYear: 2080 },
  { _id: 2, name: "Jane Smith", salary: 90000, hoursPerYear: 2080 },
  { _id: 3, name: "Bob Johnson", salary: 75000, hoursPerYear: 2080 }
]);
```

**Beispiel für eine Abfrage**

```
db.employees.aggregate([
  {
    $project: {
      name: 1,
      hourlyRate: { $divide: ["$salary", "$hoursPerYear"] }
    }
  }
])
```

**Ausgabe**

```
[
  { "_id" : 1, "name" : "John Doe", "hourlyRate" : 38.46153846153846 },
  { "_id" : 2, "name" : "Jane Smith", "hourlyRate" : 43.26923076923077 },
  { "_id" : 3, "name" : "Bob Johnson", "hourlyRate" : 36.05769230769231 }
]
```

## Codebeispiele
<a name="divide-code"></a>

Um ein Codebeispiel für die Verwendung des `$divide` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function calculateHourlyRate() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const employees = db.collection('employees');

  const result = await employees.aggregate([
    {
      $project: {
        name: 1,
        hourlyRate: { $divide: ["$salary", "$hoursPerYear"] }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

calculateHourlyRate();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def calculate_hourly_rate():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.mydatabase
    employees = db.employees

    result = list(employees.aggregate([
        {
            '$project': {
                'name': 1,
                'hourlyRate': { '$divide': ['$salary', '$hoursPerYear'] }
            }
        }
    ]))

    print(result)
    client.close()

calculate_hourly_rate()
```

------

# \$1eq
<a name="eq-aggregation"></a>

Der `$eq` Aggregationsoperator vergleicht zwei Werte und gibt zurück, `true` wenn sie gleich sind, andernfalls gibt er zurück`false`.

**Parameter**
+ `expression1`: Der erste zu vergleichende Wert.
+ `expression2`: Der zweite zu vergleichende Wert.

## Beispiel (MongoDB Shell)
<a name="eq-aggregation-examples"></a>

Das folgende Beispiel zeigt, wie der `$eq` Operator verwendet wird, um zu überprüfen, ob die Produktmengen den Zielwerten entsprechen.

**Erstellen Sie Beispieldokumente**

```
db.inventory.insertMany([
  { _id: 1, item: "Widget", qty: 50, target: 50 },
  { _id: 2, item: "Gadget", qty: 30, target: 50 },
  { _id: 3, item: "Tool", qty: 50, target: 40 }
]);
```

**Beispiel für eine Abfrage**

```
db.inventory.aggregate([
  {
    $project: {
      item: 1,
      qty: 1,
      target: 1,
      meetsTarget: { $eq: ["$qty", "$target"] }
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 1, item: 'Widget', qty: 50, target: 50, meetsTarget: true },
  { _id: 2, item: 'Gadget', qty: 30, target: 50, meetsTarget: false },
  { _id: 3, item: 'Tool', qty: 50, target: 40, meetsTarget: false }
]
```

## Codebeispiele
<a name="eq-aggregation-code"></a>

Um ein Codebeispiel für die Verwendung des `$eq` Aggregationsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('inventory');

  const result = await collection.aggregate([
    {
      $project: {
        item: 1,
        qty: 1,
        target: 1,
        meetsTarget: { $eq: ["$qty", "$target"] }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['inventory']

    result = list(collection.aggregate([
        {
            '$project': {
                'item': 1,
                'qty': 1,
                'target': 1,
                'meetsTarget': { '$eq': ['$qty', '$target'] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1exp
<a name="exp"></a>

Neu ab Version 4.0

Mit dem `$exp` Operator in Amazon DocumentDB können Sie die Konstante e auf eine bestimmte Zahl erhöhen.

**Parameter**
+ `expression`: Der auszuwertende Ausdruck. Dies kann ein beliebiger gültiger Aggregationsausdruck sein, einschließlich Feldverweise, arithmetischer Operationen und anderer Aggregationsstufen.

## Beispiel (MongoDB Shell)
<a name="exp-examples"></a>

Das folgende Beispiel zeigt, wie der `$exp` Operator verwendet wird, um alle Dokumente zu finden, bei denen das `quantity` Feld größer als das `price` Feld ist.

**Erstellen Sie Beispieldokumente**

```
db.items.insertMany([
  { item: "canvas", quantity: 4 },
  { item: "journal", quantity: 2 }
]);
```

**Beispiel für eine Abfrage**

```
db.items.aggregate([
  { $project: {
    "quantityRaised": {$exp: "$quantity"}}
  }
]);
```

**Ausgabe**

```
[
  {
    _id: ObjectId('6920b785311cf98b79d2950d'),
    quantityRaised: 54.598150033144236
  },
  {
    _id: ObjectId('6920b785311cf98b79d2950e'),
    quantityRaised: 7.38905609893065
  }
]
```

## Codebeispiele
<a name="exp-code"></a>

Um ein Codebeispiel für die Verwendung des `$exp` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function aggregateExp() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const items = db.collection('items');

  const result = await items.aggregate([
    { $project: {
      "quantityRaised": {$exp: "$quantity"}}
    }
    ]).toArray();

  console.log(result);
  client.close();
}

aggregateExp();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def aggregate_exp():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    items = db.items

    result = list(items.aggregate([
      { "$project": {
        "quantityRaised": {"$exp": "$quantity"}}
      }
    ]))

    print(result)
    client.close()

aggregate_exp()
```

------

# \$1filter
<a name="filter"></a>

Der `$filter` Operator in Amazon DocumentDB wird verwendet, um einen Filterausdruck auf jedes Element eines Arrays anzuwenden und ein Array zurückzugeben, das nur die Elemente enthält, die der angegebenen Bedingung entsprechen. Dieser Operator ist nützlich, wenn Sie komplexe Filteroperationen für Array-Felder in Ihren Dokumenten durchführen müssen.

**Parameter**
+ `input`: Das zu filternde Array-Feld.
+ `as`: Der Variablenname, der für jedes Element des `input` Arrays innerhalb des `cond` Ausdrucks verwendet werden soll.
+ `cond`: Der boolesche Ausdruck, der bestimmt, ob ein bestimmtes Element in das Ausgabearray aufgenommen werden soll.

## Beispiel (MongoDB Shell)
<a name="filter-examples"></a>

Das folgende Beispiel zeigt, wie der `$filter` Operator verwendet wird, um den Kunden jeder Bestellung zu projizieren und ein neues Array-Feld PaidItems zu erstellen, das nur die Artikel aus dem Artikelarray enthält, bei denen der Preis höher als 15 ist. Im Wesentlichen werden die Artikel jeder Bestellung so gefiltert, dass sie nur Produkte enthalten, die mehr als 15€ kosten.

**Erstellen Sie Beispieldokumente**

```
db.orders.insertMany([
  { _id: 1, customer: "abc123", items: [
    { name: "Product A", price: 10, qty: 2 },
    { name: "Product B", price: 20, qty: 1 }
  ]},
  { _id: 2, customer: "def456", items: [
    { name: "Product C", price: 5, qty: 3 },
    { name: "Product D", price: 15, qty: 4 }
  ]},
  { _id: 3, customer: "ghi789", items: [
    { name: "Product E", price: 8, qty: 3 },
    { name: "Product F", price: 12, qty: 1 }
  ]}
]);
```

**Beispiel für eine Abfrage**

```
db.orders.aggregate([
  {
    $project: {
      customer: 1,
      paidItems: {
        $filter: {
          input: "$items",
          as: "item",
          cond: { $gt: ["$$item.price", 15] }
        }
      }
    }
  }
]).pretty();
```

**Ausgabe**

```
[
  {
    _id: 1,
    customer: 'abc123',
    paidItems: [ { name: 'Product B', price: 20, qty: 1 } ]
  },
  { _id: 2, customer: 'def456', paidItems: [] },
  { _id: 3, customer: 'ghi789', paidItems: [] }
]
```

## Codebeispiele
<a name="filter-code"></a>

Um ein Codebeispiel für die Verwendung des `$filter` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const uri = 'mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false';
  const client = new MongoClient(uri);

  try {
    await client.connect();

    const db = client.db('test');
    const collection = db.collection('orders');

    const result = await collection.aggregate([
      {
        $project: {
          customer: 1,
          paidItems: {
            $filter: {
              input: "$items",
              as: "item",
              cond: { $gt: ["$$item.price", 15] }
            }
          }
        }
      }
    ]).toArray();

    console.log(JSON.stringify(result, null, 2));

  } catch (error) {
    console.error('Error:', error);
  } finally {
    await client.close();
  }
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient
from pprint import pprint

def example():
    uri = 'mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'
    
    with MongoClient(uri) as client:
        db = client.test
        collection = db.orders

        result = list(collection.aggregate([
            {
                '$project': {
                    'customer': 1,
                    'paidItems': {
                        '$filter': {
                            'input': '$items',
                            'as': 'item',
                            'cond': { '$gt': ['$$item.price', 15] }
                        }
                    }
                }
            }
        ]))

        for doc in result:
            pprint(doc)

example()
```

------

# \$1first
<a name="first"></a>

Neu ab Version 5.0.

Wird von Elastic Cluster nicht unterstützt.

Der `$first` Operator in Amazon DocumentDB gibt das erste Dokument aus einem gruppierten Satz von Dokumenten zurück. Er wird häufig in Aggregationspipelines verwendet, um das erste Dokument abzurufen, das einer bestimmten Bedingung entspricht.

**Parameter**
+ `expression`: Der Ausdruck, der als erster Wert in jeder Gruppe zurückgegeben werden soll.

## Beispiel (MongoDB Shell)
<a name="first-examples"></a>

Das folgende Beispiel zeigt, wie der `$first` Operator verwendet wird, um den ersten Elementwert abzurufen, der während der Aggregation für jede Kategorie gefunden wurde.

Hinweis: `$first` Gibt das erste Dokument auf der Grundlage der aktuellen Reihenfolge der Dokumente in der Pipeline zurück. Um eine bestimmte Reihenfolge sicherzustellen (z. B. nach Datum, Preis usw.), sollte vor der `$sort` Phase eine `$group` Stufe verwendet werden.

**Erstellen Sie Musterdokumente**

```
db.products.insertMany([
  { _id: 1, item: "abc", price: 10, category: "food" },
  { _id: 2, item: "jkl", price: 20, category: "food" },
  { _id: 3, item: "xyz", price: 5, category: "toy" },
  { _id: 4, item: "abc", price: 5, category: "toy" }
]);
```

**Beispiel für eine Abfrage**

```
db.products.aggregate([
  { $group: { _id: "$category", firstItem: { $first: "$item" } } }
]);
```

**Ausgabe**

```
[
  { "_id" : "food", "firstItem" : "abc" },
  { "_id" : "toy", "firstItem" : "xyz" }
]
```

## Codebeispiele
<a name="first-code"></a>

Um ein Codebeispiel für die Verwendung des `$first` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const uri = 'mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false';
  const client = new MongoClient(uri);

  try {
    await client.connect();

    const db = client.db('test');
    const collection = db.collection('products');

    const result = await collection.aggregate([
      { $group: { _id: "$category", firstItem: { $first: "$item" } } }
    ]).toArray();

    console.log(result);

  } catch (error) {
    console.error('Error:', error);
  } finally {
    await client.close();
  }
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient
from pprint import pprint

def example():
    client = None
    try:
        client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')

        db = client['test']
        collection = db['products']

        result = list(collection.aggregate([
            { '$group': { '_id': '$category', 'firstItem': { '$first': '$item' } } }
        ]))

        pprint(result)

    except Exception as e:
        print(f"An error occurred: {e}")

    finally:
        if client:
            client.close()

example()
```

------

# \$1floor
<a name="floor"></a>

Neu ab Version 4.0.

Der `$floor` Operator in Amazon DocumentDB gibt die größte Ganzzahl zurück, die kleiner oder gleich der angegebenen Zahl ist. Dieser Operator ist nützlich, um numerische Werte abzurunden.

**Parameter**
+ `expression`: Der numerische Ausdruck, der abgerundet werden soll.

## Beispiel (MongoDB Shell)
<a name="floor-examples"></a>

Das folgende Beispiel zeigt, wie der `$floor` Operator verwendet wird, um einen Dezimalwert auf die nächste Ganzzahl abzurunden.

**Erstellen Sie Beispieldokumente**

```
db.numbers.insertOne({ value: 3.14 });
```

**Beispiel für eine Abfrage**

```
db.numbers.aggregate([
  { $project: { _id: 0, floored: { $floor: "$value" } } }
]);
```

**Ausgabe**

```
{ "floored" : 3 }
```

## Codebeispiele
<a name="floor-code"></a>

Um ein Codebeispiel für die Verwendung des `$floor` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const uri = 'mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false';
  const client = new MongoClient(uri);

  try {
    await client.connect();

    const db = client.db('test');
    const collection = db.collection('numbers');

    const result = await collection.aggregate([
      { $project: { _id: 0, floored: { $floor: "$value" } } }
    ]).toArray();

    console.log(result);

  } catch (error) {
    console.error('Error:', error);
  } finally {
    await client.close();
  }
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient
from pprint import pprint

def example():
    client = None
    try:
        client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')

        db = client.test
        collection = db.numbers

        result = list(collection.aggregate([
            { '$project': { '_id': 0, 'floored': { '$floor': '$value' }}}
        ]))

        pprint(result)

    except Exception as e:
        print(f"An error occurred: {e}")

    finally:
        if client:
            client.close()

example()
```

------

# \$1geoNear
<a name="geoNear"></a>

In der `$geoNear` Aggregationsphase werden Dokumente in der Reihenfolge ihrer Nähe zu einem bestimmten Punkt zurückgegeben. Sie berechnet die Entfernung vom Punkt und bezieht die Entfernung in die Ausgabedokumente ein.

**Parameter**
+ `near`: Der Punkt, von dem aus Entfernungen berechnet werden sollen, angegeben als GeoJSON- oder Legacy-Koordinaten.
+ `distanceField`: Der Feldname zum Speichern der berechneten Entfernung.
+ `spherical`: Boolescher Wert, der angibt, ob sphärische Geometrie verwendet werden soll (erforderlich für GeoJSON-Punkte).
+ `maxDistance`: Optional. Maximaler Abstand vom Mittelpunkt.
+ `minDistance`: Optional. Minimaler Abstand vom Mittelpunkt.
+ `query`: Optional. Zusätzliche anzuwendende Filterkriterien.
+ `limit`: Optional. Maximale Anzahl zurückzugebender Dokumente.
+ `key`: Optional. Feld, das für Geodatenabfragen verwendet werden soll, wenn mehrere Geoindizes vorhanden sind.

## Beispiel (MongoDB Shell)
<a name="geoNear-examples"></a>

Das folgende Beispiel zeigt, wie die `$geoNear` Bühne verwendet wird, um Geschäfte zu finden, die einem bestimmten Standort am nächsten sind.

**Erstellen Sie Beispieldokumente**

```
db.stores.createIndex({ location: "2dsphere" });

db.stores.insertMany([
  { _id: 1, name: "Store A", location: { type: "Point", coordinates: [-122.4, 37.8] } },
  { _id: 2, name: "Store B", location: { type: "Point", coordinates: [-122.5, 37.7] } },
  { _id: 3, name: "Store C", location: { type: "Point", coordinates: [-122.3, 37.9] } }
]);
```

**Beispiel für eine Abfrage**

```
db.stores.aggregate([
  {
    $geoNear: {
      near: { type: "Point", coordinates: [-122.4, 37.8] },
      distanceField: "distance",
      spherical: true
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 1, name: 'Store A', location: { type: 'Point', coordinates: [ -122.4, 37.8 ] }, distance: 0 },
  { _id: 3, name: 'Store C', location: { type: 'Point', coordinates: [ -122.3, 37.9 ] }, distance: 13877.82 },
  { _id: 2, name: 'Store B', location: { type: 'Point', coordinates: [ -122.5, 37.7 ] }, distance: 15557.89 }
]
```

## Codebeispiele
<a name="geoNear-code"></a>

Um ein Codebeispiel für die Verwendung der `$geoNear` Aggregationsphase anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('stores');

  const result = await collection.aggregate([
    {
      $geoNear: {
        near: { type: "Point", coordinates: [-122.4, 37.8] },
        distanceField: "distance",
        spherical: true
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['stores']

    result = list(collection.aggregate([
        {
            '$geoNear': {
                'near': { 'type': 'Point', 'coordinates': [-122.4, 37.8] },
                'distanceField': 'distance',
                'spherical': True
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1group
<a name="group"></a>

Die `$group` Aggregationsphase in Amazon DocumentDB ermöglicht es Ihnen, Dokumente nach einem bestimmten Ausdruck zu gruppieren und verschiedene kumulative Operationen mit den gruppierten Daten durchzuführen. Dies kann für Aufgaben wie die Berechnung von Gesamtwerten, Durchschnittswerten oder anderen Statistiken auf der Grundlage der gruppierten Daten nützlich sein.

**Parameter**
+ `_id`: Gibt den Ausdruck an, nach dem die Eingabedokumente gruppiert werden sollen. Dies kann ein Feldname, ein berechneter Ausdruck oder eine Kombination aus beidem sein.
+ `accumulator expressions`: (optional) Ein oder mehrere Akkumulatorausdrücke, die auf die gruppierten Daten angewendet werden sollen. Diese Ausdrücke verwenden die oben genannten Akkumulatoroperatoren.

## Beispiel (MongoDB Shell)
<a name="group-examples"></a>

Im folgenden Beispiel werden Kunden nach ihrer Stadt gruppiert und der Gesamtbestellbetrag für jede Stadt berechnet.

**Erstellen Sie Beispieldokumente**

```
db.customers.insertMany([
  { name: "John Doe", city: "New York", orders: [{ amount: 100 }, { amount: 200 }] },
  { name: "Jane Smith", city: "Los Angeles", orders: [{ amount: 150 }, { amount: 300 }] },
  { name: "Bob Johnson", city: "New York", orders: [{ amount: 75 }, { amount: 125 }] },
  { name: "Samantha Lee", city: "Chicago", orders: [{ amount: 50 }, { amount: 100 }] }
]);
```

**Beispiel für eine Abfrage**

```
db.customers.aggregate([
  {
    $group: {
      _id: "$city",
      totalOrders: { $sum: { $sum: "$orders.amount" } }
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 'Chicago', totalOrders: 150 },
  { _id: 'Los Angeles', totalOrders: 450 },
  { _id: 'New York', totalOrders: 500 }
]
```

## Codebeispiele
<a name="group-code"></a>

Um ein Codebeispiel für die Verwendung des `$group` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function groupByCity() {
  const uri = 'mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false';
  const client = new MongoClient(uri);

  try {
    await client.connect();
    const db = client.db('test');
    const result = await db.collection('customers').aggregate([
      { $unwind: '$orders' },
      {
        $group: {
          _id: '$city',
          totalOrders: { $sum: '$orders.amount' }
        }
      }
    ]).toArray();

    console.log(result);
  } catch (err) {
    console.error('Error during aggregation:', err);
  } finally {
    await client.close();
  }
}

groupByCity();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def group_by_city():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    
    try:
        db = client.test
        result = list(db.customers.aggregate([
            {'$unwind': '$orders'},
            {
                '$group': {
                    '_id': '$city',
                    'totalOrders': {'$sum': '$orders.amount'}
                }
            }
        ]))
        print(result)
    except Exception as e:
        print(f"Error during aggregation: {e}")
    finally:
        client.close()

group_by_city()
```

------

# \$1gt
<a name="gt-aggregation"></a>

Der `$gt` Aggregationsoperator vergleicht zwei Werte und gibt zurück, `true` wenn der erste Wert größer als der zweite ist, andernfalls kehrt `false` er zurück.

**Parameter**
+ `expression1`: Der erste zu vergleichende Wert.
+ `expression2`: Der zweite zu vergleichende Wert.

## Beispiel (MongoDB Shell)
<a name="gt-aggregation-examples"></a>

Das folgende Beispiel zeigt, wie der `$gt` Operator verwendet wird, um Produkte zu identifizieren, die einen Preisschwellenwert überschreiten.

**Erstellen Sie Beispieldokumente**

```
db.products.insertMany([
  { _id: 1, name: "Laptop", price: 1200 },
  { _id: 2, name: "Mouse", price: 25 },
  { _id: 3, name: "Monitor", price: 400 }
]);
```

**Beispiel für eine Abfrage**

```
db.products.aggregate([
  {
    $project: {
      name: 1,
      price: 1,
      expensive: { $gt: ["$price", 100] }
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 1, name: 'Laptop', price: 1200, expensive: true },
  { _id: 2, name: 'Mouse', price: 25, expensive: false },
  { _id: 3, name: 'Monitor', price: 400, expensive: true }
]
```

## Codebeispiele
<a name="gt-aggregation-code"></a>

Um ein Codebeispiel für die Verwendung des `$gt` Aggregationsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('products');

  const result = await collection.aggregate([
    {
      $project: {
        name: 1,
        price: 1,
        expensive: { $gt: ["$price", 100] }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['products']

    result = list(collection.aggregate([
        {
            '$project': {
                'name': 1,
                'price': 1,
                'expensive': { '$gt': ['$price', 100] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1gte
<a name="gte-aggregation"></a>

Der `$gte` Aggregationsoperator vergleicht zwei Werte und gibt zurück, `true` ob der erste Wert größer oder gleich dem zweiten ist, andernfalls kehrt `false` er zurück.

**Parameter**
+ `expression1`: Der erste zu vergleichende Wert.
+ `expression2`: Der zweite zu vergleichende Wert.

## Beispiel (MongoDB Shell)
<a name="gte-aggregation-examples"></a>

Das folgende Beispiel zeigt, wie der `$gte` Operator verwendet wird, um zu überprüfen, ob Schüler eine Prüfung bestanden haben.

**Erstellen Sie Beispieldokumente**

```
db.students.insertMany([
  { _id: 1, name: "Alice", score: 85 },
  { _id: 2, name: "Bob", score: 60 },
  { _id: 3, name: "Charlie", score: 72 }
]);
```

**Beispiel für eine Abfrage**

```
db.students.aggregate([
  {
    $project: {
      name: 1,
      score: 1,
      passed: { $gte: ["$score", 70] }
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 1, name: 'Alice', score: 85, passed: true },
  { _id: 2, name: 'Bob', score: 60, passed: false },
  { _id: 3, name: 'Charlie', score: 72, passed: true }
]
```

## Codebeispiele
<a name="gte-aggregation-code"></a>

Um ein Codebeispiel für die Verwendung des `$gte` Aggregationsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('students');

  const result = await collection.aggregate([
    {
      $project: {
        name: 1,
        score: 1,
        passed: { $gte: ["$score", 70] }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['students']

    result = list(collection.aggregate([
        {
            '$project': {
                'name': 1,
                'score': 1,
                'passed': { '$gte': ['$score', 70] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1hour
<a name="hour"></a>

Der `$hour` Operator extrahiert die Stundenkomponente aus einem Datums- oder Zeitstempelfeld.

**Parameter**
+ `dateExpression`: Das Datum, auf das der Operator angewendet wird. Dies muss ein gültiges BSON-Datum ergeben (z. B. ein Feld wie \$1createdAt oder ein Datumsliteral).

Ein Parameter kann auch als Dokument im folgenden Format angegeben werden:

\$1Datum:`&lt;dateExpression&gt;`, Zeitzone:`&lt;timezoneExpression&gt;`\$1

Dies ermöglicht die Anwendung zeitzonenorientierter Datumsoperationen.

```
- `<tzExpression>`: (optional) The timezone of the operation result. It must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is in UTC.
```

## Beispiel (MongoDB Shell)
<a name="hour-examples"></a>

Das folgende Beispiel zeigt, wie der `$hour` Operator verwendet wird, um die Stundenkomponente aus einem Datumsfeld zu extrahieren und die Daten entsprechend zu gruppieren.

**Erstellen Sie Beispieldokumente**

```
db.events.insertMany([
  { timestamp: new Date("2023-04-01T10:30:00Z") },
  { timestamp: new Date("2023-04-01T12:45:00Z") },
  { timestamp: new Date("2023-04-02T08:15:00Z") },
  { timestamp: new Date("2023-04-02T16:20:00Z") },
  { timestamp: new Date("2023-04-03T23:59:00Z") }
]);
```

**Beispiel für eine Abfrage**

```
db.events.aggregate([
  {
    $project: {
      hour: { $hour: "$timestamp" }
    }
  },
  {
    $group: {
      _id: "$hour",
      count: { $sum: 1 }
    }
  },
  {
    $sort: { _id: 1 }
  }
]);
```

**Ausgabe**

```
[
  { "_id": 8, "count": 1 },
  { "_id": 10, "count": 1 },
  { "_id": 12, "count": 1 },
  { "_id": 16, "count": 1 },
  { "_id": 23, "count": 1 }
]
```

Diese Abfrage gruppiert die Ereignisse nach der Stundenkomponente des `timestamp` Felds und zählt die Anzahl der Ereignisse für jede Stunde.

## Codebeispiele
<a name="hour-code"></a>

Um ein Codebeispiel für die Verwendung des `$hour` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = new MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  
  try {
    await client.connect();
    const db = client.db('test');
    const collection = db.collection('events');

    const result = await collection.aggregate([
      {
        $project: {
          hour: { $hour: "$timestamp" }
        }
      },
      {
        $group: {
          _id: "$hour",
          count: { $sum: 1 }
        }
      },
      {
        $sort: { _id: 1 }
      }
    ]).toArray();

    console.log(result);
  } catch (error) {
    console.error('Error occurred:', error);
  } finally {
    await client.close();
  }
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient
from datetime import datetime

def example():
    try:
        client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
        
        db = client.test
        collection = db.events

        result = list(collection.aggregate([
            {
                "$project": {
                    "hour": {"$hour": "$timestamp"}
                }
            },
            {
                "$group": {
                    "_id": "$hour",
                    "count": {"$sum": 1}
                }
            },
            {
                "$sort": {"_id": 1}
            }
        ]))

        print(result)

    except Exception as e:
        print(f"An error occurred: {e}")
    
    finally:
        client.close()

example()
```

------

# \$1ifNull
<a name="ifNull"></a>

Der `$ifNull` Operator wird verwendet, um einen bestimmten Wert zurückzugeben, wenn der Eingabeausdruck Null oder undefiniert ergibt. Dieser Operator kann in Szenarien nützlich sein, in denen Sie einen Standardwert angeben oder Fälle behandeln null/undefined möchten.

**Parameter**
+ `expression`: Der auszuwertende Ausdruck.
+ `replacement`: Der Wert, der zurückgegeben werden soll, wenn die `<expression>` Auswertung Null oder undefiniert ergibt.

## Beispiel (MongoDB Shell)
<a name="ifNull-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$ifNull` Operators zur Bereitstellung eines Standardwerts, wenn das `name` Feld Null oder undefiniert ist.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { _id: 1, name: "John" },
  { _id: 2, name: null },
  { _id: 3 }
]);
```

**Beispiel für eine Abfrage**

```
db.users.aggregate([
  {
    $project: {
      _id: 1,
      name: { $ifNull: ["$name", "No Name"] }
    }
  }
]);
```

**Ausgabe**

```
[
  { "_id": 1, "name": "John" },
  { "_id": 2, "name": "No Name" },
  { "_id": 3, "name": "No Name" }
]
```

## Codebeispiele
<a name="ifNull-code"></a>

Um ein Codebeispiel für die Verwendung des `$ifNull` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');

  const db = client.db('test');

  const collection = db.collection('users');

  const pipeline = [
    {
      $project: {
        _id: 1,
        name: { $ifNull: ["$name", "No Name"] }
      }
    }
  ];

  const cursor = await collection.aggregate(pipeline);

  await cursor.forEach(doc => {
    console.log(doc);
  });

  await client.close();

}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    
    db = client.test
    collection = db.users

    pipeline = [
        {
            "$project": {
                "_id": 1,
                "name": { "$ifNull": ["$name", "No Name"] }
            }
        }
    ]

    result = collection.aggregate(pipeline)

    for doc in result:
        print(doc)

    client.close()

example()
```

------

# \$1in
<a name="in-aggregation"></a>

Der `$in` Aggregationsoperator prüft, ob ein bestimmter Wert innerhalb eines Arrays existiert. Er gibt zurück`true`, ob der Wert im Array gefunden wurde, und `false` andernfalls.

**Parameter**
+ `value`: Der Wert, nach dem gesucht werden soll.
+ `array`: Das Array, in dem gesucht werden soll.

## Beispiel (MongoDB Shell)
<a name="in-aggregation-examples"></a>

Das folgende Beispiel zeigt, wie der `$in` Operator verwendet wird, um zu überprüfen, ob in den Fähigkeiten jedes Mitarbeiters eine bestimmte Fähigkeit vorhanden ist.

**Erstellen Sie Beispieldokumente**

```
db.employees.insertMany([
  { _id: 1, name: "Sarah", skills: ["Python", "JavaScript", "SQL"] },
  { _id: 2, name: "Mike", skills: ["Java", "C++", "Go"] },
  { _id: 3, name: "Emma", skills: ["Python", "Ruby", "Rust"] }
]);
```

**Beispiel für eine Abfrage**

```
db.employees.aggregate([
  {
    $project: {
      name: 1,
      hasPython: { $in: ["Python", "$skills"] }
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 1, name: 'Sarah', hasPython: true },
  { _id: 2, name: 'Mike', hasPython: false },
  { _id: 3, name: 'Emma', hasPython: true }
]
```

## Codebeispiele
<a name="in-aggregation-code"></a>

Um ein Codebeispiel für die Verwendung des `$in` Aggregationsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('employees');

  const result = await collection.aggregate([
    {
      $project: {
        name: 1,
        hasPython: { $in: ["Python", "$skills"] }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['employees']

    result = list(collection.aggregate([
        {
            '$project': {
                'name': 1,
                'hasPython': { '$in': ['Python', '$skills'] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1indexOfArray
<a name="indexOfArray"></a>

Der `$indexOfArray` Operator in Amazon DocumentDB wird verwendet, um den Index des ersten Vorkommens eines bestimmten Elements in einem Array zu finden. Dieser Operator gibt die auf Null basierende Indexposition des ersten Elements im Array zurück, das dem angegebenen Wert entspricht. Wenn der Wert nicht gefunden wird, gibt er -1 zurück.

**Parameter**
+ `array`: Das zu durchsuchende Array.
+ `value`: Der Wert, nach dem im Array gesucht werden soll.
+ `start`: (optional) Die Position im Array, von der aus die Suche gestartet werden soll. Der Standardwert lautet 0.

## Beispiel (MongoDB Shell)
<a name="indexOfArray-examples"></a>

Das folgende Beispiel zeigt, wie der indexOfArray \$1-Operator verwendet wird, um den Index des ersten Vorkommens des Elements „Mango“ im Array „fruits“ für jedes Dokument zu finden.

**Erstellen Sie Beispieldokumente**

```
db.collection.insertMany([
  { _id: 1, fruits: ["apple", "banana", "cherry", "durian"] },
  { _id: 2, fruits: ["mango", "orange", "pineapple"] },
  { _id: 3, fruits: ["kiwi", "lemon", "mango"] }
]);
```

**Beispiel für eine Abfrage**

```
db.collection.aggregate([
  {
    $project: {
      _id: 1,
      fruitIndex: { $indexOfArray: ["$fruits", "mango"] }
    }
  }
]);
```

**Ausgabe**

```
{ "_id" : 1, "fruitIndex" : 1 }
{ "_id" : 2, "fruitIndex" : 0 }
{ "_id" : 3, "fruitIndex" : 2 }
```

## Codebeispiele
<a name="indexOfArray-code"></a>

Um ein Codebeispiel für die Verwendung des `$indexOfArray` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('collection');

  const result = await collection.aggregate([
    {
      $project: {
        _id: 1,
        fruitIndex: { $indexOfArray: ["$fruits", "mango"] }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['collection']

    result = list(collection.aggregate([
        {
            '$project': {
                '_id': 1,
                'fruitIndex': { '$indexOfArray': ["$fruits", "mango"] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1indexOfBytes
<a name="indexOfBytes"></a>

Der indexOfBytes \$1-Operator in Amazon DocumentDB wird verwendet, um den Startindex einer Teilzeichenfolge innerhalb einer Zeichenfolge auf der Grundlage der Bytepositionen der Zeichen zu ermitteln. Dies kann nützlich sein, wenn Sie mit Textdaten arbeiten, die Mehrbyte-Zeichen enthalten können, wie sie beispielsweise in nicht-lateinischen Schriften vorkommen.

**Parameter**
+ `string`: Die Eingabezeichenfolge, nach der gesucht werden soll.
+ `substring`: Die Teilzeichenfolge, nach der innerhalb der Eingabezeichenfolge gesucht werden soll.
+ `[<start>]`: (optional) Die Startposition (auf Null basierend) der Suche. Wenn nicht angegeben, beginnt die Suche am Anfang der Zeichenfolge.

## Beispiel (MongoDB Shell)
<a name="indexOfBytes-examples"></a>

Das folgende Beispiel zeigt die Verwendung von`$indexOfBytes`, um den Index des ersten Bindestrichs in einer Reihe von Zeichenketten zu finden, die Schreibtischpositionen darstellen.

**Erstellen Sie Beispieldokumente**

```
db.people.insertMany([
  { "_id": 1, "Desk": "Düsseldorf-BVV-021" },
  { "_id": 2, "Desk": "Munich-HGG-32a" },
  { "_id": 3, "Desk": "Cologne-ayu-892.50" },
  { "_id": 4, "Desk": "Dortmund-Hop-78" }
]);
```

**Beispiel für eine Abfrage**

```
db.people.aggregate([
  { $project: { stateLocation: { $indexOfBytes: ["$Desk", "-"] } } }
]);
```

**Ausgabe**

```
{ "_id" : 1, "stateLocation" : 11 }
{ "_id" : 2, "stateLocation" : 6 }
{ "_id" : 3, "stateLocation" : 7 }
{ "_id" : 4, "stateLocation" : 8 }
```

## Codebeispiele
<a name="indexOfBytes-code"></a>

Um ein Codebeispiel für die Verwendung des `$indexOfBytes` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const events = db.collection('people');

  const result = await db.collection('people').aggregate([
    { $project: { stateLocation: { $indexOfBytes: ["$Desk", "-"] } } }
  ]).toArray();
  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['people']
    
    result = list(db.people.aggregate([
        { '$project': { 'stateLocation': { '$indexOfBytes': ['$Desk', '-'] } } }
    ]))
    print(result)
    client.close()

example()
```

------

# \$1indexOfCP
<a name="indexOfCP"></a>

Der `$indexOfCP` Operator in Amazon DocumentDB wird verwendet, um den Index in Codepunkten (CP) des ersten Vorkommens einer angegebenen Teilzeichenfolge innerhalb eines Zeichenkettenausdrucks zu finden. Dies kann beim Parsen und Extrahieren von Inhalten aus Zeichenkettenfeldern nützlich sein.

**Parameter**
+ `string expression`: Die zu durchsuchende Zeichenfolge.
+ `substring`: Die Teilzeichenfolge, nach der gesucht werden soll.
+ `[<start>]`: (optional) Die Position, an der die Suche gestartet werden soll (nullbasierter Index). Standard = 0.

## Beispiel (MongoDB Shell)
<a name="indexOfCP-examples"></a>

In diesem Beispiel verwenden wir den `$indexOfCP` Operator, um den Index des ersten Vorkommens des Bindestrichs zu ermitteln — im Feld Schreibtisch jedes Dokuments.

**Erstellen Sie Beispieldokumente**

```
db.people.insertMany([
  { "_id":1, "name":"John Doe", "Manager":"Jane Doe", "Role":"Developer", "Desk": "Düsseldorf-BVV-021"},
  { "_id":2, "name":"John Stiles", "Manager":"Jane Doe", "Role":"Manager", "Desk": "Munich-HGG-32a"},
  { "_id":3, "name":"Richard Roe", "Manager":"Jorge Souza", "Role":"Product", "Desk": "Cologne-ayu-892.50"},
  { "_id":4, "name":"Mary Major", "Manager":"Jane Doe", "Role":"Solution Architect", "Desk": "Dortmund-Hop-78"}
])
```

**Beispiel für eine Abfrage**

```
db.people.aggregate([
  { $project: { stateLocation: { $indexOfCP: [ "$Desk", "-"] } } }
])
```

**Ausgabe**

```
{ "_id" : 1, "stateLocation" : 10 }
{ "_id" : 2, "stateLocation" : 6 }
{ "_id" : 3, "stateLocation" : 7 }
{ "_id" : 4, "stateLocation" : 8 }
```

## Codebeispiele
<a name="indexOfCP-code"></a>

Um ein Codebeispiel für die Verwendung des `$indexOfCP` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('people');

  const result = await collection.aggregate([
    { $project: { stateLocation: { $indexOfCP: [ "$Desk", "-"] } } }
  ]).toArray();

  console.log(result);

  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
collection = db['people']

result = list(collection.aggregate([
    { '$project': { 'stateLocation': { '$indexOfCP': [ '$Desk', '-' ] } } }
]))

print(result)

client.close()
```

------

# \$1indexStats
<a name="indexStats"></a>

Die `$indexStats` Aggregationsphase in Amazon DocumentDB bietet Einblick in die Verwendung von Indizes innerhalb einer Sammlung. Dieser Operator ermöglicht es Ihnen, die Zugriffsmuster Ihrer Indizes zu überwachen, was Ihnen helfen kann, fundierte Entscheidungen über die Indexverwaltung und -optimierung zu treffen.

**Parameter**

Keine

## Beispiel (MongoDB Shell)
<a name="indexStats-examples"></a>

Das folgende Beispiel zeigt, wie der `$indexStats` Operator verwendet wird, um die Indexnutzung in einer Amazon DocumentDB-Sammlung zu analysieren.

**Erstellen Sie Beispieldokumente**

```
db.grocery.insertMany([
  { _id: 1, product: "milk", quantity: 10 },
  { _id: 2, product: "eggs", quantity: 20 },
  { _id: 3, product: "bread", quantity: 5 },
  { _id: 4, product: "cheese", quantity: 15 },
  { _id: 5, product: "apple", quantity: 8 }
]);
```

**Beispiel für eine Abfrage**

```
db.grocery.aggregate([
  { $indexStats: {} }
]);
```

**Ausgabe**

```
[
  {
    "name": "_id_",
    "key": {
      "_id": 1
    },
    "host": "docdb-cluster-1.cluster-123456789.us-west-2.docdb.amazonaws.com",
    "accesses": {
      "ops": NumberLong(5),
      "since": ISODate("2023-04-06T12:34:56.789Z")
    }
  },
  {
    "name": "product_1",
    "key": {
      "product": 1
    },
    "host": "docdb-cluster-1.cluster-123456789.us-west-2.docdb.amazonaws.com",
    "accesses": {
      "ops": NumberLong(10),
      "since": ISODate("2023-04-06T12:34:56.789Z")
    }
  }
]
```

In diesem Beispiel zeigt der `$indexStats` Operator, dass seit dem `_id_` letzten Reset oder Serverneustart fünfmal auf den `product_1` Index zugegriffen wurde und dass zehnmal auf den Index zugegriffen wurde.

## Codebeispiele
<a name="indexStats-code"></a>

Um ein Codebeispiel für die Verwendung des `$indexStats` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function indexStats() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const result = await db.collection('grocery').aggregate([
    { $indexStats: {} }
  ]).toArray();
  console.log(result);
  await client.close();
}

indexStats();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def index_stats():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    result = list(db.grocery.aggregate([
        { '$indexStats': {} }
    ]))
    print(result)
    client.close()

index_stats()
```

------

# \$1isArray
<a name="isArray"></a>

Der `$isArray` Operator in Amazon DocumentDB wird verwendet, um zu prüfen, ob es sich bei einem Feld in einem Dokument um ein Array handelt. Dieser Operator kann in Aggregationspipelines und bedingten Ausdrücken nützlich sein, um Felder vom Typ Array zu verarbeiten.

**Parameter**
+ `field`: Der Feldpfad, um zu überprüfen, ob es sich um ein Array handelt.

## Beispiel (MongoDB Shell)
<a name="isArray-examples"></a>

Dieses Beispiel zeigt, wie der `$isArray` Operator verwendet wird, um Dokumente zu identifizieren, bei denen das Feld „Inventar“ ein Array ist.

**Erstellen Sie Beispieldokumente**

```
db.videos.insertMany([
  { "_id":1, "name":"Live Soft", "inventory": {"Des Moines": 1000, "Ames" : 500}},
  { "_id":2, "name":"Top Pilot", "inventory": {"Mason City": 250, "Des Moines": 1000}},
  { "_id":3, "name":"Romancing the Rock", "inventory": {"Mason City": 250, "Ames" : 500}},
  { "_id":4, "name":"Bravemind", "inventory": [{"location": "Mason City", "count": 250}, {"location": "Des Moines", "count": 1000}, {"location": "Ames", "count": 500}]}
]);
```

**Beispiel für eine Abfrage**

```
db.videos.aggregate([
  {
    $match: {
      $isArray: "$inventory"
    }
  },
  {
    $project: {
      _id: 1,
      name: 1,
      "inventory.location": 1,
      "inventory.count": 1
    }
  }
]).pretty();
```

**Ausgabe**

```
{
  "_id": 4,
  "name": "Bravemind",
  "inventory": [
    {
      "location": "Mason City",
      "count": 250
    },
    {
      "location": "Des Moines",
      "count": 1000
    },
    {
      "location": "Ames",
      "count": 500
    }
  ]
}
```

## Codebeispiele
<a name="isArray-code"></a>

Um ein Codebeispiel für die Verwendung des `$isArray` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function run() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('videos');

  const result = await collection.aggregate([
    {
      $match: {
        $isArray: '$inventory'
      }
    },
    {
      $project: {
        _id: 1,
        name: 1,
        "inventory.location": 1,
        "inventory.count": 1
      }
    }
  ]).toArray();

  console.log(result);

  await client.close();
}

run();
```

------
#### [ Python ]

```
from pymongo import MongoClient

client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
collection = db['videos']

result = list(collection.aggregate([
    {
        '$match': {
            '$isArray': '$inventory'
        }
    },
    {
        '$project': {
            '_id': 1,
            'name': 1,
            'inventory.location': 1,
            'inventory.count': 1
        }
    }
]))

print(result)

client.close()
```

------

# \$1 isoDayOf Woche
<a name="isoDayOfWeek"></a>

Der `$isoDayOfWeek` Operator in Amazon DocumentDB gibt den ISO-Wochentag für ein Datum als Ganzzahl zurück. Das ISO-Wochendatumssystem definiert jede Woche, die an einem Montag beginnt und an einem Sonntag endet, wobei Woche 1 die Woche ist, die den ersten Donnerstag des Jahres enthält.

**Parameter**
+ `expression`: Der Datumsausdruck, für den der ISO-Wochentag zurückgegeben werden soll.

## Beispiel (MongoDB Shell)
<a name="isoDayOfWeek-examples"></a>

Das folgende Beispiel zeigt, wie der `$isoDayOfWeek` Operator verwendet wird, um den ISO-Wochentag für eine Reihe von Ereignisdokumenten abzurufen.

**Erstellen Sie Beispieldokumente**

```
db.events.insertMany([
  { _id: 1, eventDate: ISODate("2023-04-01T12:00:00Z") },
  { _id: 2, eventDate: ISODate("2023-04-02T12:00:00Z") },
  { _id: 3, eventDate: ISODate("2023-04-03T12:00:00Z") },
  { _id: 4, eventDate: ISODate("2023-04-04T12:00:00Z") },
  { _id: 5, eventDate: ISODate("2023-04-05T12:00:00Z") },
  { _id: 6, eventDate: ISODate("2023-04-06T12:00:00Z") },
  { _id: 7, eventDate: ISODate("2023-04-07T12:00:00Z") }
]);
```

**Beispiel für eine Abfrage**

```
db.events.aggregate([
  { $project: {
    _id: 1,
    eventDate: 1,
    isoDayOfWeek: { $isoDayOfWeek: "$eventDate" }
  }}
]);
```

**Ausgabe**

```
[
  { "_id": 1, "eventDate": ISODate("2023-04-01T12:00:00Z"), "isoDayOfWeek": 6 },
  { "_id": 2, "eventDate": ISODate("2023-04-02T12:00:00Z"), "isoDayOfWeek": 7 },
  { "_id": 3, "eventDate": ISODate("2023-04-03T12:00:00Z"), "isoDayOfWeek": 1 },
  { "_id": 4, "eventDate": ISODate("2023-04-04T12:00:00Z"), "isoDayOfWeek": 2 },
  { "_id": 5, "eventDate": ISODate("2023-04-05T12:00:00Z"), "isoDayOfWeek": 3 },
  { "_id": 6, "eventDate": ISODate("2023-04-06T12:00:00Z"), "isoDayOfWeek": 4 },
  { "_id": 7, "eventDate": ISODate("2023-04-07T12:00:00Z"), "isoDayOfWeek": 5 }
]
```

## Codebeispiele
<a name="isoDayOfWeek-code"></a>

Um ein Codebeispiel für die Verwendung des `$isoDayOfWeek` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const events = db.collection('events');

  const result = await events.aggregate([
    {
      $project: {
        _id: 1,
        eventDate: 1,
        isoDayOfWeek: { $isoDayOfWeek: '$eventDate' }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    events = db.events

    result = list(events.aggregate([
        {
            '$project': {
                '_id': 1,
                'eventDate': 1,
                'isoDayOfWeek': { '$isoDayOfWeek': '$eventDate' }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1isoWeek
<a name="isoWeek"></a>

Der `$isoWeek` Operator in Amazon DocumentDB gibt die ISO-Wochennummer für ein Datum zurück. Das ISO-Wochendatumssystem ist eine Methode zur Nummerierung von Wochen in einem Jahr, wobei die erste Woche eines neuen Jahres die Woche ist, die den ersten Donnerstag des Jahres enthält. Dies unterscheidet sich vom gregorianischen Kalender, bei dem die erste Woche eines neuen Jahres die Woche ist, die den 1. Januar enthält.

**Parameter**

Keine

## Beispiel (MongoDB Shell)
<a name="isoWeek-examples"></a>

Das folgende Beispiel zeigt, wie der `$isoWeek` Operator verwendet wird, um die ISO-Wochennummer für ein bestimmtes Datum abzurufen.

**Erstellen Sie Beispieldokumente**

```
db.dates.insertMany([
  { _id: 1, date: new ISODate("2022-01-01") },
  { _id: 2, date: new ISODate("2022-12-31") },
  { _id: 3, date: new ISODate("2023-01-01") }
])
```

**Beispiel für eine Abfrage**

```
db.dates.aggregate([
  {
    $project: {
      _id: 1,
      isoWeek: { $isoWeek: "$date" }
    }
  }
])
```

**Ausgabe**

```
[
  { "_id": 1, "isoWeek": 52 },
  { "_id": 2, "isoWeek": 52 },
  { "_id": 3, "isoWeek": 1 }
]
```

## Codebeispiele
<a name="isoWeek-code"></a>

Um ein Codebeispiel für die Verwendung des `$isoWeek` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('dates');

  const result = await collection.aggregate([
    {
      $project: {
        _id: 1,
        isoWeek: { $isoWeek: "$date" }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['dates']

    result = list(collection.aggregate([
        {
            '$project': {
                '_id': 1,
                'isoWeek': { '$isoWeek': '$date' }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1isoWeekYear
<a name="isoWeekYear"></a>

Der `$isoWeekYear` Operator in Amazon DocumentDB gibt die ISO-8601-Wochenjahreszahl für ein bestimmtes Datum zurück. Die ISO-Wochenjahreszahl unterscheidet sich vom gregorianischen Kalenderjahr dadurch, dass sich das Wochenjahr vom Kalenderjahr unterscheiden kann, insbesondere zu Beginn und Ende des Jahres.

**Parameter**
+ `expression`: Der Datumsausdruck, für den die Jahreszahl der ISO-8601-Woche zurückgegeben werden soll.

## Beispiel (MongoDB Shell)
<a name="isoWeekYear-examples"></a>

Dieses Beispiel zeigt, wie der `$isoWeekYear` Operator verwendet wird, um das ISO 8601-Wochenjahr für das Datumsfeld jedes Dokuments in der Eventsammlung abzurufen.

**Erstellen Sie Beispieldokumente**

```
db.events.insertMany([
  { _id: 1, name: "Event 1", date: ISODate("2022-12-31T00:00:00Z") },
  { _id: 2, name: "Event 2", date: ISODate("2023-01-01T00:00:00Z") },
  { _id: 3, name: "Event 3", date: ISODate("2023-01-02T00:00:00Z") }
]);
```

**Beispiel für eine Abfrage**

```
db.events.aggregate([
  { $project: {
    name: 1,
    isoWeekYear: { $isoWeekYear: "$date" }
  }}
]);
```

**Ausgabe**

```
[
  { "_id" : 1, "name" : "Event 1", "isoWeekYear" : 2023 },
  { "_id" : 2, "name" : "Event 2", "isoWeekYear" : 2023 },
  { "_id" : 3, "name" : "Event 3", "isoWeekYear" : 2023 }
]
```

## Codebeispiele
<a name="isoWeekYear-code"></a>

Um ein Codebeispiel für die Verwendung des `$isoWeekYear` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const events = db.collection('events');

  const result = await events.aggregate([
    { $project: {
      name: 1,
      isoWeekYear: { $isoWeekYear: '$date' }
    }}
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    events = db.events

    result = list(events.aggregate([
        { '$project': {
            'name': 1,
            'isoWeekYear': { '$isoWeekYear': '$date' }
        }}
    ]))

    print(result)
    client.close()

example()
```

------

# \$1last
<a name="last"></a>

Der `$last` Operator in Amazon DocumentDB wird verwendet, um das letzte Element in einem Array zurückzugeben, das den Abfragekriterien entspricht. Er ist besonders nützlich, um das neueste oder das letzte Element in einem Array abzurufen, das eine bestimmte Bedingung erfüllt.

**Parameter**
+ `expression`: Der Ausdruck, der den Array-Elementen entspricht.

## Beispiel (MongoDB Shell)
<a name="last-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$last` Operators in Kombination mit dem `$filter` Abrufen des letzten Elements aus einem Array, das eine bestimmte Bedingung erfüllt (z. B. ist subject 'science').

**Erstellen Sie Beispieldokumente**

```
db.collection.insertMany([
  {
    "_id": 1,
    "name": "John",
    "scores": [
      { "subject": "math", "score": 82 },
      { "subject": "english", "score": 85 },
      { "subject": "science", "score": 90 }
    ]
  },
  {
    "_id": 2,
    "name": "Jane",
    "scores": [
      { "subject": "math", "score": 92 },
      { "subject": "english", "score": 88 },
      { "subject": "science", "score": 87 }
    ]
  },
  {
    "_id": 3,
    "name": "Bob",
    "scores": [
      { "subject": "math", "score": 75 },
      { "subject": "english", "score": 80 },
      { "subject": "science", "score": 85 }
    ]
  }
]);
```

**Beispiel für eine Abfrage**

```
db.collection.aggregate([
    { $match: { name: "John" } },
    {
      $project: {
        name: 1,
        lastScienceScore: {
          $last: {
            $filter: {
              input: "$scores",
              as: "score",
              cond: { $eq: ["$$score.subject", "science"] }
            }
          }
        }
      }
    }
  ]);
```

**Ausgabe**

```
[
  {
    _id: 1,
    name: 'John',
    lastScienceScore: { subject: 'science', score: 90 }
  }
]
```

## Codebeispiele
<a name="last-code"></a>

Um ein Codebeispiel für die Verwendung des `$last` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  
  const db = client.db('test');
  const collection = db.collection('collection');

  const result = await collection.aggregate([
    { $match: { name: "John" } },
    {
      $project: {
        name: 1,
        lastScienceScore: {
          $last: {
            $filter: {
              input: "$scores",
              as: "score",
              cond: { $eq: ["$$score.subject", "science"] }
            }
          }
        }
      }
    }
  ]).toArray();

  console.log(JSON.stringify(result, null, 2));
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():

    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')

    db = client.test
    collection = db.collection

    pipeline = [
        { "$match": { "name": "John" } },
        {
            "$project": {
                "name": 1,
                "lastScienceScore": {
                    "$last": {
                        "$filter": {
                            "input": "$scores",
                            "as": "score",
                            "cond": { "$eq": ["$$score.subject", "science"] }
                        }
                    }
                }
            }
        }
    ]

    result = list(collection.aggregate(pipeline))

    print(result)

    client.close()

example()
```

------

# \$1let
<a name="let"></a>

Der `$let` Operator in Amazon DocumentDB wird verwendet, um Variablen an Werte zu binden und diese Variablen im Ausdruck zu verwenden. Es ermöglicht Ihnen, lokale Variablen zu definieren, die in nachfolgenden Ausdrücken innerhalb derselben Phase der Aggregationspipeline verwendet werden können.

**Parameter**
+ `vars`: Ein Objekt, das die Variablen definiert, die im Ausdruck verwendet werden sollen.
+ `in`: Der Ausdruck, in dem die im vars-Parameter definierten Variablen verwendet werden.

## Beispiel (MongoDB Shell)
<a name="let-examples"></a>

Dieses Beispiel demonstriert die Verwendung des `$let` Operators zur Berechnung der Fläche eines Rechtecks.

**Erstellen Sie Beispieldokumente**

```
db.shapes.insertMany([
  { name: "Rectangle 1", length: 5, width: 3 },
  { name: "Rectangle 2", length: 7, width: 4 },
  { name: "Rectangle 3", length: 6, width: 2 }
]);
```

**Beispiel für eine Abfrage**

```
db.shapes.aggregate([
  {
    $project: {
      name: 1,
      area: {
        $let: {
          vars: {
            length: "$length",
            width: "$width"
          },
          in: {
            $multiply: ["$$length", "$$width"]
          }
        }
      }
    }
  }
])
```

**Ausgabe**

```
[
  {
    "_id": ObjectId("6161e5b1a3eba3c7f2960d03"),
    "name": "Rectangle 1",
    "area": 15
  },
  {
    "_id": ObjectId("6161e5b1a3eba3c7f2960d04"),
    "name": "Rectangle 2",
    "area": 28
  },
  {
    "_id": ObjectId("6161e5b1a3eba3c7f2960d05"),
    "name": "Rectangle 3",
    "area": 12
  }
]
```

## Codebeispiele
<a name="let-code"></a>

Um ein Codebeispiel für die Verwendung des `$let` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function calculateRectangleAreas() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('shapes');

  const result = await shapes.aggregate([
    {
      $project: {
        name: 1,
        area: {
          $let: {
            vars: {
              length: '$length',
              width: '$width'
            },
            in: {
              $multiply: ['$$length', '$$width']
            }
          }
        }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

calculateRectangleAreas();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def calculate_rectangle_areas():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.shapes

    result = list(shapes.aggregate([
        {
            '$project': {
                'name': 1,
                'area': {
                    '$let': {
                        'vars': {
                            'length': '$length',
                            'width': '$width'
                        },
                        'in': {
                            '$multiply': ['$$length', '$$width']
                        }
                    }
                }
            }
        }
    ]))

    print(result)
    client.close()

calculate_rectangle_areas()
```

------

# \$1limit
<a name="limit"></a>

Der `$limit` Operator in Amazon DocumentDB wird verwendet, um die Anzahl der von einer Abfrage zurückgegebenen Dokumente einzuschränken. Er ähnelt dem `$limit` MongoDB-Operator, es gibt jedoch einige spezifische Überlegungen, wenn er mit Amazon DocumentDB verwendet wird.

In Amazon DocumentDB ist der `$limit` Operator nützlich für die Paginierung, bei der Sie eine Teilmenge der gesamten übereinstimmenden Dokumente abrufen möchten. Damit können Sie die Anzahl der Dokumente kontrollieren, die in jeder Antwort zurückgesendet werden, wodurch die Leistung verbessert und die Menge der über das Netzwerk übertragenen Daten reduziert wird.

**Parameter**
+ `limit`: Die maximale Anzahl von Dokumenten, die zurückgegeben werden sollen. Dies muss ein nicht negativer Ganzzahlwert sein.

## Beispiel (MongoDB Shell)
<a name="limit-examples"></a>

Das folgende Beispiel zeigt, wie der `$limit` Operator verwendet wird, um maximal ein Dokument zurückzugeben, das dem angegebenen Filter entspricht.

**Erstellen Sie Beispieldokumente**

```
db.test.insertMany([
  { "_id": 1, "star_rating": 4, "comments": "apple is red" },
  { "_id": 2, "star_rating": 5, "comments": "comfortable couch" },
  { "_id": 3, "star_rating": 3, "comments": "apples, oranges - healthy fruit" },
  { "_id": 4, "star_rating": 5, "comments": "this is a great couch" },
  { "_id": 5, "star_rating": 5, "comments": "interesting couch" }
]);
```

**Beispiel für eine Abfrage**

```
db.test.createIndex({ comments: "text" });

db.test.find({
  $and: [
    { star_rating: 5 },
    { $text: { $search: "couch" } }
  ]
}).limit(1);
```

**Ausgabe**

```
[ { _id: 2, star_rating: 5, comments: 'comfortable couch' } ]
```

## Codebeispiele
<a name="limit-code"></a>

Um ein Codebeispiel für die Verwendung des `$limit` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function limitExample() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');

  try {
      await client.connect();
      
      const db = client.db('test');
      const collection = db.collection('test');

      await collection.createIndex({ comments: 'text' });

      const query = {
        $and: [
          { star_rating: 5 },
          { $text: { $search: "couch" } }
        ]
      };

      const result = await collection.find(query).limit(1).toArray();

      console.log(result);

    } catch (err) {
        console.error("Error:", err);
    } finally {
        await client.close();
    }

}

limitExample();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def limit_example():
    try:
        client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')

        db = client['test']
        collection = db['test']

        collection.create_index([('comments', 'text')])

        query = {
            '$and': [
                {'star_rating': 5},
                {'$text': {'$search': 'couch'}}
            ]
        }

        result = collection.find(query).limit(1)

        for doc in result:
            print(doc)

    except Exception as e:
        print(f"An error occurred: {e}")
    
    finally:
        client.close()

limit_example()
```

------

# \$1literal
<a name="literal"></a>

Der `$literal` Operator in Amazon DocumentDB wird verwendet, um einen Literalwert innerhalb einer Aggregationspipeline-Phase darzustellen. Er ermöglicht es Ihnen, einen bestimmten Wert einzubeziehen, z. B. eine Zahl, eine Zeichenfolge oder einen booleschen Wert, ohne ihn als Feldverweis oder Ausdruck zu interpretieren.

Dieser Operator ist besonders nützlich, wenn Sie einen Literalwert als Teil einer komplexeren Aggregationspipeline einbeziehen müssen, z. B. beim Erstellen dynamischer Abfragefilter oder beim Durchführen von Berechnungen.

**Parameter**

Keine

## Beispiel (MongoDB Shell)
<a name="literal-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$literal` Operators, um einen Literalwert in eine Aggregationspipeline aufzunehmen. Der `$literal` Operator wird verwendet, um den Wert 18 als Literalwert in den \$1gt-Ausdruck aufzunehmen. Auf diese Weise kann die Aggregationspipeline das Altersfeld mit dem Literalwert 18 vergleichen, um festzustellen, ob es sich bei der Person um einen Erwachsenen handelt.

**Erstellen Sie Beispieldokumente**

```
db.collection.insertMany([
  { "name": "John Doe", "age": 30, "city": "New York" },
  { "name": "Jane Doe", "age": 25, "city": "Los Angeles" },
  { "name": "Bob Smith", "age": 35, "city": "Chicago" }
]);
```

**Beispiel für eine Abfrage**

```
db.collection.aggregate([
  {
    $project: {
      name: 1,
      age: 1,
      city: 1,
      isAdult: { $gt: ["$age", { $literal: 18 }] }
    }
  }
]);
```

**Ausgabe**

```
[
  {
    "_id": ObjectId("601234567890abcdef012345"),
    "name": "John Doe",
    "age": 30,
    "city": "New York",
    "isAdult": true
  },
  {
    "_id": ObjectId("601234567890abcdef012346"),
    "name": "Jane Doe",
    "age": 25,
    "city": "Los Angeles",
    "isAdult": true
  },
  {
    "_id": ObjectId("601234567890abcdef012347"),
    "name": "Bob Smith",
    "age": 35,
    "city": "Chicago",
    "isAdult": true
  }
]
```

## Codebeispiele
<a name="literal-code"></a>

Um ein Codebeispiel für die Verwendung des `$literal` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('collection');

  const result = await collection.aggregate([
    {
      $project: {
        name: 1,
        age: 1,
        city: 1,
        isAdult: { $gt: ["$age", { $literal: 18 }] }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.collection

    result = list(collection.aggregate([
        {
            '$project': {
                'name': 1,
                'age': 1,
                'city': 1,
                'isAdult': { '$gt': ["$age", { '$literal': 18 }] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1ln
<a name="ln"></a>

Neu ab Version 4.0.

Der `$ln` Operator in Amazon DocumentDB berechnet den natürlichen Logarithmus (Basis e) einer bestimmten Zahl. Er gibt den Logarithmus der Zahl zur Basis e zurück.

**Parameter**
+ `expression`: Die Zahl, für die der natürliche Logarithmus berechnet wird.

## Beispiel (MongoDB Shell)
<a name="ln-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$log` Operators zur Berechnung des natürlichen Logarithmus einer Zahl.

**Erstellen Sie Beispieldokumente**

```
db.numbers.insertMany([
  { _id: 1, value: 10 },
  { _id: 2, value: 100 },
  { _id: 3, value: 1000 }
]);
```

**Beispiel für eine Abfrage**

```
db.numbers.aggregate([
  { $project: {
    _id: 1,
    naturalLog: { $ln: "$value" }
  }}
]);
```

**Ausgabe**

```
[
  { "_id" : 1, "naturalLog" : 2.302585092994046 },
  { "_id" : 2, "naturalLog" : 4.605170185988092 },
  { "_id" : 3, "naturalLog" : 6.907755278982137 }
]
```

## Codebeispiele
<a name="ln-code"></a>

Um ein Codebeispiel für die Verwendung des `$ln` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');

  const db = client.db('test');
  const collection = db.collection('numbers');

  const result = await collection.aggregate([
    { $project: {
      _id: 1,
      naturalLog: { $ln: "$value" }
    }}
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
  
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')

    db = client.test
    collection = db.numbers

    result = list(collection.aggregate([
        { "$project": {
            "_id": 1,
            "naturalLog": { "$ln": "$value" }
        }}
    ]))

    print(result)
    client.close()

example()
```

------

# \$1log
<a name="log"></a>

Neu ab Version 4.0.

Der `$log` Operator in Amazon DocumentDB berechnet den natürlichen Logarithmus einer Zahl. Er gibt den Logarithmus zur Basis E der angegebenen Zahl zurück.

**Parameter**
+ `expression`: Die Zahl, für die der natürliche Logarithmus berechnet wird.
+ `base`: Basiswert für die Log-Berechnung.

## Beispiel (MongoDB Shell)
<a name="log-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$log` Operators zur Berechnung des natürlichen Logarithmus einer Zahl.

**Erstellen Sie Beispieldokumente**

```
db.numbers.insertMany([
  { _id: 1, value: 10 },
  { _id: 2, value: 100 },
  { _id: 3, value: 1000 }
]);
```

**Beispiel für eine Abfrage**

```
db.numbers.aggregate([
  { $project: {
    _id: 1,
    naturalLog: { $log: ["$value", 10] }
  }}
]);
```

**Ausgabe**

```
[
  { "_id" : 1, "naturalLog" : 1 },
  { "_id" : 2, "naturalLog" : 2 },
  { "_id" : 3, "naturalLog" : 2.9999999999999996 }
]
```

## Codebeispiele
<a name="log-code"></a>

Um ein Codebeispiel für die Verwendung des `$log` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');

  const db = client.db('test');
  const collection = db.collection('numbers');

  const result = await collection.aggregate([
    { $project: {
      _id: 1,
      naturalLog: { $log: ["$value", 10] }
    }}
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    
    db = client.test
    collection = db.numbers

    result = list(collection.aggregate([
        { "$project": {
            "_id": 1,
            "naturalLog": { "$log": ["$value", 10] }
        }}
    ]))

    print(result)
    client.close()

example()
```

------

# \$1log10
<a name="log10"></a>

Neu ab Version 4.0.

Der `$log10` Operator in Amazon DocumentDB wird verwendet, um den Logarithmus einer Zahl zur Basis 10 zu berechnen. Er ist nützlich, um logarithmische Berechnungen für numerische Felder innerhalb der Aggregationspipeline durchzuführen.

**Parameter**
+ `expression`: Der numerische Ausdruck, für den der Logarithmus zur Basis 10 berechnet werden soll.

## Beispiel (MongoDB Shell)
<a name="log10-examples"></a>

Das folgende Beispiel zeigt, wie der `$log10` Operator verwendet wird, um den Logarithmus zur Basis 10 eines numerischen Feldes zu berechnen.

**Erstellen Sie Beispieldokumente**

```
db.numbers.insertMany([
  { _id: 1, value: 1 },
  { _id: 2, value: 10 },
  { _id: 3, value: 100 },
  { _id: 4, value: 1000 }
]);
```

**Beispiel für eine Abfrage**

```
db.numbers.aggregate([
  {
    $project: {
      _id: 1,
      log10Value: { $log10: "$value" }
    }
  }
]);
```

**Ausgabe**

```
[
  { "_id": 1, "log10Value": 0 },
  { "_id": 2, "log10Value": 1 },
  { "_id": 3, "log10Value": 2 },
  { "_id": 4, "log10Value": 3 }
]
```

## Codebeispiele
<a name="log10-code"></a>

Um ein Codebeispiel für die Verwendung des `$log10` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  let client;

  try {
    client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
    
    const db = client.db('test');
    const collection = db.collection('numbers');

    const result = await collection.aggregate([
      {
        $project: {
          _id: 1,
          log10Value: { $log10: "$value" }
        }
      }
    ]).toArray();

    console.log(result);
  } catch (error) {
    console.error("An error occurred:", error);
  } finally {
    if (client) {
      await client.close();
    }
  }
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = None
    try:
        client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
        
        db = client.test
        collection = db.numbers

        result = list(collection.aggregate([
            {
                '$project': {
                    '_id': 1,
                    'log10Value': { '$log10': '$value' }
                }
            }
        ]))

        print(result)
    
    except Exception as e:
        print(f"An error occurred: {e}")
    
    finally:
        if client:
            client.close()

example()
```

------

# \$1lt
<a name="lt-aggregation"></a>

Der `$lt` Aggregationsoperator vergleicht zwei Werte und gibt zurück, `true` wenn der erste Wert kleiner als der zweite ist, andernfalls kehrt `false` er zurück.

**Parameter**
+ `expression1`: Der erste zu vergleichende Wert.
+ `expression2`: Der zweite zu vergleichende Wert.

## Beispiel (MongoDB Shell)
<a name="lt-aggregation-examples"></a>

Das folgende Beispiel zeigt, wie der `$lt` Operator verwendet wird, um Artikel mit geringem Lagerbestand zu identifizieren.

**Erstellen Sie Beispieldokumente**

```
db.warehouse.insertMany([
  { _id: 1, item: "Bolts", stock: 5 },
  { _id: 2, item: "Nuts", stock: 25 },
  { _id: 3, item: "Screws", stock: 8 }
]);
```

**Beispiel für eine Abfrage**

```
db.warehouse.aggregate([
  {
    $project: {
      item: 1,
      stock: 1,
      lowStock: { $lt: ["$stock", 10] }
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 1, item: 'Bolts', stock: 5, lowStock: true },
  { _id: 2, item: 'Nuts', stock: 25, lowStock: false },
  { _id: 3, item: 'Screws', stock: 8, lowStock: true }
]
```

## Codebeispiele
<a name="lt-aggregation-code"></a>

Um ein Codebeispiel für die Verwendung des `$lt` Aggregationsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('warehouse');

  const result = await collection.aggregate([
    {
      $project: {
        item: 1,
        stock: 1,
        lowStock: { $lt: ["$stock", 10] }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['warehouse']

    result = list(collection.aggregate([
        {
            '$project': {
                'item': 1,
                'stock': 1,
                'lowStock': { '$lt': ['$stock', 10] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1lte
<a name="lte-aggregation"></a>

Der `$lte` Aggregationsoperator vergleicht zwei Werte und gibt zurück, `true` ob der erste Wert kleiner oder gleich dem zweiten ist, andernfalls kehrt `false` er zurück.

**Parameter**
+ `expression1`: Der erste zu vergleichende Wert.
+ `expression2`: Der zweite zu vergleichende Wert.

## Beispiel (MongoDB Shell)
<a name="lte-aggregation-examples"></a>

Das folgende Beispiel zeigt, wie der `$lte` Operator verwendet wird, um budgetfreundliche Artikel zu identifizieren.

**Erstellen Sie Beispieldokumente**

```
db.menu.insertMany([
  { _id: 1, dish: "Salad", price: 8 },
  { _id: 2, dish: "Pasta", price: 12 },
  { _id: 3, dish: "Soup", price: 6 }
]);
```

**Beispiel für eine Abfrage**

```
db.menu.aggregate([
  {
    $project: {
      dish: 1,
      price: 1,
      affordable: { $lte: ["$price", 10] }
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 1, dish: 'Salad', price: 8, affordable: true },
  { _id: 2, dish: 'Pasta', price: 12, affordable: false },
  { _id: 3, dish: 'Soup', price: 6, affordable: true }
]
```

## Codebeispiele
<a name="lte-aggregation-code"></a>

Um ein Codebeispiel für die Verwendung des `$lte` Aggregationsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('menu');

  const result = await collection.aggregate([
    {
      $project: {
        dish: 1,
        price: 1,
        affordable: { $lte: ["$price", 10] }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['menu']

    result = list(collection.aggregate([
        {
            '$project': {
                'dish': 1,
                'price': 1,
                'affordable': { '$lte': ['$price', 10] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1lookup
<a name="lookup"></a>

Die `$lookup` Aggregationsphase in Amazon DocumentDB ermöglicht es Ihnen, einen Left Outer Join zwischen zwei Sammlungen durchzuführen. Mit diesem Vorgang können Sie Daten aus mehreren Sammlungen auf der Grundlage übereinstimmender Feldwerte kombinieren. Dies ist besonders nützlich, wenn Sie Daten aus verwandten Sammlungen in Ihre Abfrageergebnisse integrieren müssen.

**Parameter**
+ `from`: Der Name der Sammlung, mit der die Verknüpfung durchgeführt werden soll.
+ `localField`: Das Feld aus den Eingabedokumenten, das mit dem abgeglichen werden soll`foreignField`.
+ `foreignField`: Das Feld aus den Dokumenten in der `from` Sammlung, mit dem abgeglichen werden soll`localField`.
+ `as`: Der Name des neuen Felds, das zu den Ausgabedokumenten hinzugefügt werden soll, die die passenden Dokumente aus der `from` Sammlung enthalten.

## Beispiel (MongoDB Shell)
<a name="lookup-examples"></a>

Das folgende Beispiel zeigt einen einfachen `$lookup` Vorgang, bei dem Daten aus der `orders` Sammlung mit der `customers` Sammlung verknüpft werden.

**Erstellen Sie Beispieldokumente**

```
db.customers.insertMany([
  { _id: 1, name: "Alice" },
  { _id: 2, name: "Bob" },
  { _id: 3, name: "Charlie" }
]);

db.orders.insertMany([
  { _id: 1, customer_id: 1, total: 50 },
  { _id: 2, customer_id: 1, total: 100 },
  { _id: 3, customer_id: 2, total: 75 }
]);
```

**Beispiel für eine Abfrage**

```
db.customers.aggregate([
  {
    $lookup: {
      from: "orders",           
      localField: "_id",        
      foreignField: "customer_id", 
      as: "orders" 
    }
  }
]);
```

**Ausgabe**

```
[
  {
    _id: 1,
    name: 'Alice',
    orders: [
      { _id: 2, customer_id: 1, total: 100 },
      { _id: 1, customer_id: 1, total: 50 }
    ]
  },
  { _id: 3, name: 'Charlie', orders: [] },
  {
    _id: 2,
    name: 'Bob',
    orders: [ { _id: 3, customer_id: 2, total: 75 } ]
  }
]
```

## Codebeispiele
<a name="lookup-code"></a>

Um ein Codebeispiel für die Verwendung des `$lookup` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');

  await client.connect();

  const db = client.db('test');

  const result = await db.collection('customers').aggregate([
    {
      $lookup: {
        from: 'orders',
        localField: '_id',
        foreignField: 'customer_id',
        as: 'orders'
      }
    }
  ]).toArray();

  console.log(JSON.stringify(result, null, 2));
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')

    db = client.test
    
    collection = db.customers

    pipeline = [
        {
            "$lookup": {
                "from": "orders",
                "localField": "_id",
                "foreignField": "customer_id",
                "as": "orders"
            }
        }
    ]

    result = collection.aggregate(pipeline)

    for doc in result:
        print(doc)

    client.close()

example()
```

------

# \$1 ltrim
<a name="ltrim"></a>

Neu ab Version 4.0.

Wird von Elastic Cluster nicht unterstützt.

Der `$ltrim` Operator in Amazon DocumentDB wird verwendet, um führende Zeichen aus einer Zeichenfolge zu entfernen. Standardmäßig entfernt er führende Leerzeichen, aber Sie können auch eine Reihe von Zeichen angeben, die entfernt werden sollen, indem Sie das Argument chars übergeben.

**Parameter**
+ `input`: Die Eingabezeichenfolge, aus der führende Leerzeichen entfernt werden sollen.
+ `chars`: (optional) Um bestimmte Zeichen zu entfernen.

## Beispiel (MongoDB Shell)
<a name="ltrim-examples"></a>

Das folgende Beispiel zeigt die Verwendung von`$ltrim`, um bestimmte Zeichen (“ \$1“) am Anfang einer Zeichenfolge zu entfernen.

**Erstellen Sie Beispieldokumente**

```
db.collection.insertMany([
  { name: " *John Doe", age: 30 },
  { name: "Jane Doe*", age: 25 },
  { name: "  Bob Smith  ", age: 35 }
]);
```

**Beispiel für eine Abfrage**

```
db.collection.aggregate([
  {
    $project: {
      _id: 0,
      name: {
        $ltrim: { input: "$name", chars: " *" }  
      },
      age: 1
    }
  }
]);
```

**Ausgabe**

```
[
  { "name": "John Doe", "age": 30 },
  { "name": "Jane Doe ", "age": 25 },
  { "name": "Bob Smith  ", "age": 35 }
]
```

## Codebeispiele
<a name="ltrim-code"></a>

Um ein Codebeispiel für die Verwendung des `$ltrim` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');

  try {
    await client.connect();

    const db = client.db('test');
    const collection = db.collection('collection');

    const pipeline = [
      {
        $project: {
          _id: 0,
          name: {
            $ltrim: {
              input: '$name',
              chars: ' *'
            }
          },
          age: 1
        }
      }
    ];

    const result = await collection.aggregate(pipeline).toArray();

    console.dir(result, { depth: null });

  } finally {
    await client.close();
  }
}

example().catch(console.error);
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    try:
        client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')

        db = client.test
        collection = db.collection

        pipeline = [
            {
                "$project": {
                    "_id": 0,
                    "name": {
                        "$ltrim": {
                            "input": "$name",
                            "chars": " *"
                        }
                    },
                    "age": 1
                }
            }
        ]

        results = collection.aggregate(pipeline)

        for doc in results:
            print(doc)

    except Exception as e:
        print(f"An error occurred: {e}")
    
    finally:
        client.close()

example()
```

------

# \$1map
<a name="map"></a>

Der `$map` Operator in Amazon DocumentDB ermöglicht es Ihnen, einen bestimmten Ausdruck auf jedes Element in einem Array anzuwenden und ein neues Array mit den transformierten Elementen zurückzugeben. Dieser Operator ist besonders nützlich für die Manipulation und Transformation von Daten innerhalb von Arrays. Er kann dazu beitragen, Ihren Anwendungscode zu vereinfachen und die Abfrageleistung zu verbessern, indem die Array-Verarbeitung auf Datenbankebene verlagert wird.

**Parameter**
+ `input`: Das Array, das transformiert werden soll.
+ `as`: (optional) Der Name der Variablen, die innerhalb des in-Ausdrucks verwendet werden soll, um das aktuelle Element darzustellen, das gerade verarbeitet wird.
+ `in`: Der Ausdruck, der auf jedes Element im Eingabearray angewendet werden soll.

## Beispiel (MongoDB Shell)
<a name="map-examples"></a>

Das folgende Beispiel zeigt, wie der \$1map-Operator verwendet wird, um ein Zahlenarray zu transformieren, wobei jeder Wert verdoppelt wird.

**Erstellen Sie Beispieldokumente**

```
db.collection.insertMany([
  { _id: 1, numbers: [1, 2, 3, 4, 5] },
  { _id: 2, numbers: [10, 20, 30, 40, 50] }
])
```

**Beispiel für eine Abfrage**

```
db.collection.aggregate([
  {
    $project: {
      doubledNumbers: { $map: { input: "$numbers", as: "num", in: { $multiply: ["$$num", 2] } } }
    }
  }
])
```

**Ausgabe**

```
[
  { _id: 1, doubledNumbers: [2, 4, 6, 8, 10] },
  { _id: 2, doubledNumbers: [20, 40, 60, 80, 100] }
]
```

## Codebeispiele
<a name="map-code"></a>

Um ein Codebeispiel für die Verwendung des `$map` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('collection');

  const result = await collection.aggregate([
    {
      $project: {
        doubledNumbers: { $map: { input: "$numbers", as: "num", in: { $multiply: ["$$num", 2] } } }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.collection

    result = list(collection.aggregate([
        {
            '$project': {
                'doubledNumbers': { '$map': { 'input': '$numbers', 'as': 'num', 'in': { '$multiply': ['$$num', 2] } } }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1match
<a name="match"></a>

Die `$match` Pipeline-Phase in Amazon DocumentDB wird verwendet, um die Eingabedokumente nur so zu filtern, dass sie den angegebenen Abfragekriterien entsprechen. Sie ist eine der am häufigsten verwendeten Pipeline-Phasen bei Aggregationsvorgängen. Die `$match` Phase wird vor allen anderen Pipeline-Phasen angewendet, sodass Sie die Anzahl der Dokumente, die in den nachfolgenden Phasen verarbeitet werden müssen, effizient reduzieren können.

**Parameter**
+ `query`: Ein Dokument, das die Auswahlkriterien für die Operation zum Ausdruck bringt. Das Abfragedokument verwendet dieselbe Syntax wie die `find()` Methode.

## Beispiel (MongoDB Shell)
<a name="match-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$match` Stagingbereichs zum Filtern von Dokumenten auf der Grundlage eines bestimmten Feldwerts.

**Erstellen Sie Beispieldokumente**

```
db.collection.insertMany([
  { _id: 1, name: "John", age: 25, city: "New York" },
  { _id: 2, name: "Jane", age: 30, city: "Los Angeles" },
  { _id: 3, name: "Bob", age: 35, city: "Chicago" },
  { _id: 4, name: "Alice", age: 40, city: "Miami" }
]);
```

**Beispiel für eine Abfrage**

```
db.collection.aggregate([
  { $match: { age: { $gt: 30 } } },
  { $project: { _id: 1, name: 1, city: 1 } }
]);
```

**Ausgabe**

```
[
  { "_id": 3, "name": "Bob", "city": "Chicago" },
  { "_id": 4, "name": "Alice", "city": "Miami" }
]
```

`$match`In der Phase werden die Dokumente so gefiltert, dass sie nur diejenigen enthalten, bei denen das `age` Feld größer als 30 ist.

## Codebeispiele
<a name="match-code"></a>

Um ein Codebeispiel für die Verwendung des `$match` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');

  const db = client.db('test');
  const collection = db.collection('collection');

  const result = await collection.aggregate([
    { $match: { age: { $gt: 30 } } },
    { $project: { _id: 1, name: 1, city: 1 } }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    
    db = client['test']
    collection = db['collection']

    result = list(collection.aggregate([
        { '$match': { 'age': { '$gt': 30 } } },
        { '$project': { '_id': 1, 'name': 1, 'city': 1 } }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1max
<a name="max"></a>

Die `$max` Aggregationsphase wird verwendet, um den Maximalwert eines angegebenen Felds für alle Dokumente in einer Pipeline-Phase zurückzugeben. Dieser Operator ist nützlich, um den höchsten Wert in einer Reihe von Dokumenten zu finden.

**Parameter**
+ `expression`: Der Ausdruck, der zur Berechnung des Maximalwerts verwendet werden soll.

## Beispiel (MongoDB Shell)
<a name="max-examples"></a>

Das folgende Beispiel zeigt, wie der `$max` Operator verwendet wird, um die maximale Punktzahl in einer Sammlung von Studentendokumenten zu ermitteln. `$group`In der Phase werden alle Dokumente gruppiert, und der `$max` Operator wird verwendet, um den Maximalwert des `score` Feldes für alle Dokumente zu berechnen.

**Erstellen Sie Beispieldokumente**

```
db.students.insertMany([
  { name: "John", score: 85 },
  { name: "Jane", score: 92 },
  { name: "Bob", score: 78 },
  { name: "Alice", score: 90 }
])
```

**Beispiel für eine Abfrage**

```
db.students.aggregate([
  { $group: { _id: null, maxScore: { $max: "$score" } } },
  { $project: { _id: 0, maxScore: 1 } }
])
```

**Ausgabe**

```
[ { maxScore: 92 } ]
```

## Codebeispiele
<a name="max-code"></a>

Um ein Codebeispiel für die Verwendung des `$max` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findMaxScore() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const students = db.collection('students');

  const result = await students.aggregate([
    { $group: { _id: null, maxScore: { $max: "$score" } } }
  ]).toArray();

  console.log(result);
  await client.close();
}

findMaxScore();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_max_score():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    students = db.students

    result = list(students.aggregate([
        { "$group": { "_id": None, "maxScore": { "$max": "$score" } } }
    ]))

    print(result)
    client.close()

find_max_score()
```

------

# \$1meta
<a name="meta-aggregation"></a>

Der `$meta` Aggregationsoperator greift auf Metadaten zu, die Dokumenten in einer Aggregationspipeline zugeordnet sind. Er wird häufig verwendet, um Ergebnisse der Textsuche abzurufen und Ergebnisse nach Relevanz zu sortieren.

**Parameter**
+ `textScore`: Ruft das Ergebnis der Textsuche ab, das die Relevanz des Dokuments für die Suchabfrage angibt.

## Beispiel (MongoDB Shell)
<a name="meta-aggregation-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$meta` Operators in einer Aggregationspipeline zum Abrufen und Sortieren nach Textsuchergebnissen.

**Erstellen Sie Beispieldokumente**

```
db.articles.createIndex({ content: "text" });

db.articles.insertMany([
  { _id: 1, title: "Python Programming", content: "Python is a versatile programming language used for web development." },
  { _id: 2, title: "Python Guide", content: "Learn Python programming with Python tutorials and Python examples." },
  { _id: 3, title: "Java Basics", content: "Java is another popular programming language." }
]);
```

**Beispiel für eine Abfrage**

```
db.articles.aggregate([
  { $match: { $text: { $search: "Python" } } },
  { $addFields: { score: { $meta: "textScore" } } },
  { $sort: { score: -1 } }
]);
```

**Ausgabe**

```
[
  {
    _id: 2,
    title: 'Python Guide',
    content: 'Learn Python programming with Python tutorials and Python examples.',
    score: 1.5
  },
  {
    _id: 1,
    title: 'Python Programming',
    content: 'Python is a versatile programming language used for web development.',
    score: 0.75
  }
]
```

## Codebeispiele
<a name="meta-aggregation-code"></a>

Um ein Codebeispiel für die Verwendung des `$meta` Aggregationsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('articles');

  const result = await collection.aggregate([
    { $match: { $text: { $search: "Python" } } },
    { $addFields: { score: { $meta: "textScore" } } },
    { $sort: { score: -1 } }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['articles']

    result = list(collection.aggregate([
        { '$match': { '$text': { '$search': 'Python' } } },
        { '$addFields': { 'score': { '$meta': 'textScore' } } },
        { '$sort': { 'score': -1 } }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1 zusammenführen
<a name="merge"></a>

In 8.0 eingeführt

Die `$merge` Aggregationsphase in Amazon DocumentDB wird verwendet, um die Ergebnisse der vorherigen Pipeline-Phase in einer Zielsammlung zusammenzuführen. Dies ist nützlich, um Dokumente auf der Grundlage der Daten aus den Eingabedokumenten zu aktualisieren oder in eine Zielsammlung einzufügen.

In dieser `$merge` Phase können Sie verschiedene Aktionen ausführen, die auf der Übereinstimmungsbedingung zwischen den Eingabedokumenten und der Zielsammlung basieren, z. B.:

```
- Insert new documents
- Update existing documents
- Delete documents
- Fail the operation if there are any conflicts
```

**Parameter**
+ `into`: (erforderlich) Der Name der Zielsammlung, zu der die Eingabedokumente zusammengeführt werden sollen.
+ `on`: (erforderlich) Die Felder, die als Vergleichsbedingung zwischen den Eingabedokumenten und der Zielsammlung verwendet werden sollen.
+ `whenMatched`: (optional) Die Aktion, die ausgeführt werden soll, wenn das Eingabedokument mit einem vorhandenen Dokument in der Zielsammlung übereinstimmt. Unterstützte Werte sind `"merge"`, `"replace"`, `"keepExisting"` und `"fail"`.
+ `whenNotMatched`: (optional) Die Aktion, die ausgeführt werden soll, wenn das Eingabedokument mit keinem Dokument in der Zielsammlung übereinstimmt. Unterstützte Werte sind: `"insert"` und`"fail"`.

## Beispiel (MongoDB Shell)
<a name="merge-examples"></a>

Das folgende Beispiel zeigt, wie der `$merge` Stagingbereich verwendet wird, um eine `users` Sammlung mit neuen Daten aus einer Eingabepipeline zu aktualisieren.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { _id: 1, name: "John Doe", email: "john@example.com" },
  { _id: 2, name: "Jane Smith", email: "jane@example.com" }
]);

db.inputData.insertMany([
  { _id: 1, name: "John Doe", email: "john@example.com", phone: "123-456-7890" },
  { _id: 3, name: "Bob Johnson", email: "bob@example.com", phone: "987-654-3210" }
]);
```

**Beispiel für eine Abfrage**

```
db.inputData.aggregate([
  {
    $merge: {
      into: "users",
      on: "_id",
      whenMatched: "merge",
      whenNotMatched: "insert"
    }
  }
])
```

**Ausgabe**

Nach dem Ausführen der `$merge` Pipeline wird die `users` Sammlung die folgenden Dokumente enthalten:

```
[
  { _id: 1, name: "John Doe", email: "john@example.com", phone: "123-456-7890" },
  { _id: 2, name: "Jane Smith", email: "jane@example.com" },
  { _id: 3, name: "Bob Johnson", email: "bob@example.com", phone: "987-654-3210" }
]
```

## Codebeispiele
<a name="merge-code"></a>

Um ein Codebeispiel für die Verwendung des `$merge` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

Hier ist ein Beispiel für die Verwendung des \$1merge-Operators in einer Node.js -Anwendung:

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');

  await db.collection('inputData').aggregate([
    {
      $merge: {
        into: 'users',
        on: '_id',
        whenMatched: 'merge',
        whenNotMatched: 'insert'
      }
    }
  ]).toArray();

  const users = await db.collection('users').find({}).toArray();
  console.log(users);

  await client.close();
}

example();
```

------
#### [ Python ]

Hier ist ein Beispiel für die Verwendung des \$1merge-Operators in einer Python-Anwendung:

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']

    # Assumes collections 'users' and 'inputData' already exist with sample data
    db.inputData.aggregate([
        {
            '$merge': {
                'into': 'users',
                'on': '_id',
                'whenMatched': 'merge',
                'whenNotMatched': 'insert'
            }
        }
    ])

    users = list(db.users.find({}))
    print(users)

    client.close()

example()
```

------

# \$1mergeObjects
<a name="mergeObjects"></a>

Der `$mergeObjects` Operator in Amazon DocumentDB wird verwendet, um mehrere Dokumente oder Objekte zu einem einzigen Dokument zu kombinieren. Dieser Operator ist besonders nützlich, wenn Sie den Inhalt von zwei oder mehr Dokumenten oder Objekten zusammenführen müssen und dabei möglicherweise Werte aus einem Objekt mit denen eines anderen überschreiben müssen.

**Parameter**
+ `expression1`: Das erste Objekt, das zusammengeführt werden soll.
+ `expression2`: (optional) Das zweite Objekt, das zusammengeführt werden soll.
+ `expression3`: (optional) Zusätzliche Objekte, die zusammengeführt werden sollen.

## Beispiel (MongoDB Shell)
<a name="mergeObjects-examples"></a>

Das folgende Beispiel zeigt, wie der `$mergeObjects` Operator verwendet wird, um zwei Objekte zu kombinieren.

**Erstellen Sie Beispieldokumente**

```
db.collection.insertMany([
  { "_id": 1, "name": "John", "address": { "city": "New York", "state": "NY" } },
  { "_id": 2, "name": "Jane", "address": { "city": "Los Angeles", "state": "CA" } }
]);
```

**Beispiel für eine Abfrage**

```
db.collection.aggregate([
  {
    $project: {
      "combinedAddress": {
        $mergeObjects: ["$address", { "country": "USA" }]
      }
    }
  }
])
```

**Ausgabe**

```
[
  {
    "_id": 1,
    "combinedAddress": {
      "city": "New York",
      "state": "NY",
      "country": "USA"
    }
  },
  {
    "_id": 2,
    "combinedAddress": {
      "city": "Los Angeles",
      "state": "CA",
      "country": "USA"
    }
  }
]
```

## Codebeispiele
<a name="mergeObjects-code"></a>

Um ein Codebeispiel für die Verwendung des `$mergeObjects` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('collection');

  const result = await collection.aggregate([
    {
      $project: {
        "combinedAddress": {
          $mergeObjects: ["$address", { "country": "USA" }]
        }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['collection']

    result = list(collection.aggregate([
        {
            '$project': {
                "combinedAddress": {
                    "$mergeObjects": ["$address", { "country": "USA" }]
                }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1millisecond
<a name="millisecond"></a>

Der `$millisecond` Operator in Amazon DocumentDB wird verwendet, um den Millisekundenanteil eines Datumswerts zu extrahieren.

**Parameter**

Keine

## Beispiel (MongoDB Shell)
<a name="millisecond-examples"></a>

Dieses Beispiel zeigt, wie der `$millisecond` Operator verwendet wird, um den Millisekundenanteil eines Datumswerts zu extrahieren.

**Erstellen Sie Beispieldokumente**

```
db.events.insert([
  {
    "name": "Event 1",
    "timestamp": ISODate("2023-04-21T10:30:15.123Z")
  },
  {
    "name": "Event 2",
    "timestamp": ISODate("2023-04-21T10:30:15.456Z")
  },
  {
    "name": "Event 3",
    "timestamp": ISODate("2023-04-21T10:30:15.789Z")
  }
])
```

**Beispiel für eine Abfrage**

```
db.events.aggregate([
  {
    $project: {
      name: 1,
      milliseconds: { $millisecond: "$timestamp" }
    }
  }
])
```

**Ausgabe**

```
[
  {
    "_id": ObjectId("644332a42054ed1b0d15f0c1"),
    "name": "Event 1",
    "milliseconds": 123
  },
  {
    "_id": ObjectId("644332a42054ed1b0d15f0c2"),
    "name": "Event 2",
    "milliseconds": 456
  },
  {
    "_id": ObjectId("644332a42054ed1b0d15f0c3"),
    "name": "Event 3",
    "milliseconds": 789
  }
]
```

## Codebeispiele
<a name="millisecond-code"></a>

Um ein Codebeispiel für die Verwendung des `$millisecond` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const events = db.collection('events');

  const result = await events.aggregate([
    {
      $project: {
        name: 1,
        milliseconds: { $millisecond: '$timestamp' }
      }
    }
  ]).toArray();

  console.log(result);

  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
events = db['events']

result = list(events.aggregate([
    {
        '$project': {
            'name': 1,
            'milliseconds': { '$millisecond': '$timestamp' }
        }
    }
]))

print(result)

client.close()
```

------

# \$1min
<a name="min"></a>

Der `$min` Operator gibt den Minimalwert aus einer Reihe von Werten zurück. Er kann in Aggregationsphasen verwendet werden, um den Mindestwert für ein bestimmtes Feld in mehreren Dokumenten zu ermitteln.

**Parameter**
+ `expression`: Der auszuwertende Ausdruck. Dies kann ein Feldpfad, eine Variable oder ein beliebiger Ausdruck sein, der in einen Wert aufgelöst wird.

## Beispiel (MongoDB Shell)
<a name="min-examples"></a>

Das folgende Beispiel zeigt, wie der `$min` Operator verwendet wird, um den Mindestwert des `age` Felds in mehreren Dokumenten zu ermitteln.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { name: "John", age: 35 },
  { name: "Jane", age: 28 },
  { name: "Bob", age: 42 },
  { name: "Alice", age: 31 }
]);
```

**Beispiel für eine Abfrage**

```
db.users.aggregate([
  { $group: { _id: null, minAge: { $min: "$age" } } },
  { $project: { _id: 0, minAge: 1 } }
])
```

**Ausgabe**

```
[ { minAge: 28 } ]
```

## Codebeispiele
<a name="min-code"></a>

Um ein Codebeispiel für die Verwendung des `$min` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findMinAge() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const users = db.collection('users');

  const result = await users.aggregate([
    { $group: {
        _id: null,
        minAge: { $min: "$age" }
      }}
  ]).toArray();

  console.log(result);
  client.close();
}

findMinAge();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_min_age():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    users = db.users

    result = list(users.aggregate([
        { "$group": {
            "_id": None,
            "minAge": { "$min": "$age" }
        }}
    ]))

    print(result)
    client.close()

find_min_age()
```

------

# \$1minute
<a name="minute"></a>

Die `$minute` Aggregationspipeline-Phase in Amazon DocumentDB extrahiert den Minutenwert aus einem Datums- oder Zeitstempelfeld.

Dieser Operator ist nützlich, wenn Sie datums- und zeitbasierte Berechnungen oder Gruppierungen innerhalb Ihrer Aggregationspipeline durchführen müssen.

**Parameter**
+ `expression`: Das Datums- oder Zeitstempelfeld, aus dem der Minutenwert extrahiert werden soll.

## Beispiel (MongoDB Shell)
<a name="minute-examples"></a>

Das folgende Beispiel zeigt, wie der `$minute` Operator verwendet wird, um die Dokumente nach dem aus dem Zeitstempelfeld extrahierten Minutenwert zu gruppieren und die Anzahl der Dokumente in jeder Gruppe zu zählen.

**Erstellen Sie Beispieldokumente**

```
db.events.insertMany([
  { timestamp: new Date("2023-04-15T10:30:25.000Z") },
  { timestamp: new Date("2023-04-15T10:30:35.000Z") },
  { timestamp: new Date("2023-04-15T10:31:05.000Z") },
  { timestamp: new Date("2023-04-15T10:31:45.000Z") },
  { timestamp: new Date("2023-04-15T10:32:15.000Z") }
]);
```

**Beispiel für eine Abfrage**

```
db.events.aggregate([
  {
    $group: {
      _id: {
        minute: { $minute: "$timestamp" }
      },
      count: { $count: {} }
    }
  },
  { $sort: { "_id.minute": 1 } }
]);
```

**Ausgabe**

```
[
  { "_id": { "minute": 30 }, "count": 2 },
  { "_id": { "minute": 31 }, "count": 2 },
  { "_id": { "minute": 32 }, "count": 1 }
]
```

## Codebeispiele
<a name="minute-code"></a>

Um ein Codebeispiel für die Verwendung des `$minute` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('events');

  await collection.insertMany([
    { timestamp: new Date("2023-04-15T10:30:25.000Z") },
    { timestamp: new Date("2023-04-15T10:30:35.000Z") },
    { timestamp: new Date("2023-04-15T10:31:05.000Z") },
    { timestamp: new Date("2023-04-15T10:31:45.000Z") },
    { timestamp: new Date("2023-04-15T10:32:15.000Z") }
  ]);

  const result = await collection.aggregate([
    {
      $group: {
        _id: {
          minute: { $minute: "$timestamp" }
        },
        count: { $count: {} }
      }
    },
    { $sort: { "_id.minute": 1 } }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient
from datetime import datetime

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['events']

    collection.insert_many([
        {'timestamp': datetime(2023, 4, 15, 10, 30, 25)},
        {'timestamp': datetime(2023, 4, 15, 10, 30, 35)},
        {'timestamp': datetime(2023, 4, 15, 10, 31, 5)},
        {'timestamp': datetime(2023, 4, 15, 10, 31, 45)},
        {'timestamp': datetime(2023, 4, 15, 10, 32, 15)}
    ])

    result = list(collection.aggregate([
        {
            '$group': {
                '_id': {
                    'minute': {'$minute': '$timestamp'}
                },
                'count': {'$count': {}}
            }
        },
        {'$sort': {'_id.minute': 1}}
    ]))

    print(result)
    client.close()

example()
```

------

# \$1mod
<a name="mod"></a>

Der `$mod` Operator ist ein arithmetischer Operator, der eine Modulo-Operation für eine Zahl ausführt. Er gibt den Rest der Division einer Zahl durch eine andere zurück. Dieser Operator wird häufig verwendet, um zu bestimmen, ob eine Zahl ungerade oder gerade ist, oder um Elemente in eine endliche Anzahl von Gruppen zu verteilen.

**Parameter**
+ `expression1`: Der Dividendenausdruck.
+ `expression2`: Der Divisor-Ausdruck.

## Beispiel (MongoDB Shell)
<a name="mod-examples"></a>

Dieses Beispiel zeigt, wie der `$mod` Operator verwendet wird, um die Anzahl der übrig gebliebenen Widgets zu ermitteln, wenn Pakete mit 100 Stück versendet werden.

**Erstellen Sie Beispieldokumente**

```
db.widgets.insertMany([
  { "_id" : 1, "widget" : "A", "count" : 80372 },
  { "_id" : 2, "widget" : "B", "count" : 409282 },
  { "_id" : 3, "widget" : "C", "count" : 60739 }
])
```

**Beispiel für eine Abfrage**

```
db.widgets.aggregate([
  { $addFields: { leftOver: { $mod: [ "$count", 100 ] } } }
])
```

**Ausgabe**

```
[
  { "_id" : 1, "widget" : "A", "count" : 80372, "leftOver" : 72 },
  { "_id" : 2, "widget" : "B", "count" : 409282, "leftOver" : 82 },
  { "_id" : 3, "widget" : "C", "count" : 60739, "leftOver" : 39 }
]
```

Die Ausgabe zeigt den Rest `count` geteilt durch 100 für jedes Dokument. Dies entspricht der Anzahl der übrig gebliebenen Widgets beim Versand in Paketen mit 100 Stück.

## Codebeispiele
<a name="mod-code"></a>

Um ein Codebeispiel für die Verwendung des `$mod` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const widgets = db.collection('widgets');

  await widgets.insertMany([
    { "_id" : 1, "widget" : "A", "count" : 80372 },
    { "_id" : 2, "widget" : "B", "count" : 409282 },
    { "_id" : 3, "widget" : "C", "count" : 60739 }
  ]);

  const result = await widgets.aggregate([
    { $addFields: { leftOver: { $mod: [ "$count", 100 ] } } }
  ]).toArray();

  console.log(result);
  client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
widgets = db['widgets']

widgets.insert_many([
    { "_id" : 1, "widget" : "A", "count" : 80372 },
    { "_id" : 2, "widget" : "B", "count" : 409282 },
    { "_id" : 3, "widget" : "C", "count" : 60739 }
])

result = list(widgets.aggregate([
    { "$addFields": { "leftOver": { "$mod": [ "$count", 100 ] } } }
]))

print(result)
client.close()
```

------

# \$1month
<a name="month"></a>

Der `$month` Operator in Amazon DocumentDB gibt den Monat eines Datums als Zahl zwischen 1 und 12 zurück. Dieser Operator ist nützlich, um die Monatskomponente aus einem Datumsfeld zu extrahieren und datumsbasierte Aggregationen und Analysen durchzuführen.

**Parameter**
+ `date_expression`: Dies ist der Ausdruck oder das Feld, das das Datum oder den Zeitstempel enthält, aus dem Sie den Monat extrahieren möchten.

## Beispiel (MongoDB Shell)
<a name="month-examples"></a>

Das folgende Beispiel zeigt, wie der `$month` Operator verwendet wird, um den Monat aus einem Datumsfeld zu extrahieren und die Daten nach Monat zu gruppieren.

**Erstellen Sie Beispieldokumente**

```
db.sales.insert([
  { product: "abc123", price: 10.99, date: new Date("2022-01-15") },
  { product: "def456", price: 15.50, date: new Date("2022-02-28") },
  { product: "ghi789", price: 8.25, date: new Date("2022-03-10") },
  { product: "jkl012", price: 12.75, date: new Date("2022-04-05") },
  { product: "mno345", price: 18.99, date: new Date("2022-05-20") }
]);
```

**Beispiel für eine Abfrage**

```
db.sales.aggregate([
  { $group: { 
      _id: { month: { $month: "$date" } },
      totalSales: { $sum: "$price" }
    }},
  { $sort: { "_id.month": 1 } }
]);
```

**Ausgabe**

```
[
  { _id: { month: 1 }, totalSales: 10.99 },
  { _id: { month: 2 }, totalSales: 15.5 },
  { _id: { month: 3 }, totalSales: 8.25 },
  { _id: { month: 4 }, totalSales: 12.75 },
  { _id: { month: 5 }, totalSales: 18.99 }
]
```

## Codebeispiele
<a name="month-code"></a>

Um ein Codebeispiel für die Verwendung des `$month` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function groupSalesByMonth() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');

  try {
    await client.connect();
    const db = client.db('test');
    const collection = db.collection('sales');

    const pipeline = [
      {
        $group: {
          _id: { month: { $month: "$date" } },
          totalSales: { $sum: "$price" }
        }
      },
      {
        $sort: { "_id.month": 1 }
      }
    ];

    const results = await collection.aggregate(pipeline).toArray();

    console.dir(results, { depth: null });

  } finally {
    await client.close();
  }
}

groupSalesByMonth().catch(console.error);
```

------
#### [ Python ]

```
from pymongo import MongoClient

def group_sales_by_month():
  
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')

    try:
        db = client.test
        collection = db.sales

        pipeline = [
            {
                "$group": {
                    "_id": { "$month": "$date" }, 
                    "totalSales": { "$sum": "$price" }  
                }
            },
            {
                "$sort": { "_id": 1 } 
            }
        ]

        results = collection.aggregate(pipeline)

        for doc in results:
            print(doc)

    except Exception as e:
        print(f"An error occurred: {e}")

    finally:
        client.close()

group_sales_by_month()
```

------

# \$1multiply
<a name="multiply"></a>

Der `$multiply` Operator in Amazon DocumentDB wird verwendet, um die Werte von zwei oder mehr Feldern oder Ausdrücken zu multiplizieren. Dieser Operator ist besonders nützlich, um arithmetische Operationen an numerischen Feldern in Dokumenten durchzuführen. Er kann in verschiedenen Phasen der Aggregationspipeline eingesetzt werden, z. B. bei `$project` und`$addFields`, um neue Felder zu erstellen oder bestehende zu ändern.

**Parameter**
+ `expression1`: Der erste numerische Ausdruck, der multipliziert werden soll.
+ `expression2`: Der zweite numerische Ausdruck, der multipliziert werden soll.
+ `[expression3, ...]`: (optional) Zusätzliche numerische Ausdrücke, die multipliziert werden sollen.

## Beispiel (MongoDB Shell)
<a name="multiply-examples"></a>

Das folgende Beispiel zeigt die Verwendung `$multiply` zur Berechnung `bonus_miles` durch Multiplikation `base_miles` und `bonus_rate` für Kunden, die für die Reise eine Kreditkarte verwendet haben.

**Beispieldokumente**

```
db.miles.insertMany([
{ "_id": 1, "customer_name": "Arnav Desai", "member_since": ISODate("1997-03-01T00:00:00Z"), "base_miles": 2500, "bonus_rate": 1.8, "credit_card": true, "trip_cost": 250 },
{ "_id": 2, "customer_name": "Jorge Souza", "member_since": ISODate("2004-01-10T00:00:00Z"), "base_miles": 1890, "bonus_rate": 1.4, "credit_card": true, "trip_cost": 189 },
{ "_id": 3, "customer_name": "Saanvi Sarkar", "member_since": ISODate("1999-11-22T00:00:00Z"), "base_miles": 3250, "bonus_rate": 1.8, "credit_card": false, "trip_cost": 325 },
{ "_id": 4, "customer_name": "Paulo Santos", "member_since": ISODate("2021-06-19T00:00:00Z"), "base_miles": 2980, "bonus_rate": 1.2, "credit_card": true, "trip_cost": 298 },
{ "_id": 5, "customer_name": "Wang Xiulan", "member_since": ISODate("1995-12-04T00:00:00Z"), "base_miles": 1350, "bonus_rate": 1.9, "credit_card": false, "trip_cost": 135 }
]);
```

**Beispiel für eine Abfrage**

```
db.miles.aggregate([
  {
    $match: { credit_card: true }
  },
  {
    $project: {
      customer_name: 1,
      base_miles: 1,
      bonus_rate:1,
      credit_card: 1,
      total_miles: {
        $multiply: ["$base_miles", "$bonus_rate"]
      }
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 1, customer_name: 'Arnav Desai', base_miles: 12500, bonus_rate: 1.8, credit_card: true, total_miles: 22500 },
  { _id: 3, customer_name: 'Saanvi Sarkar',base_miles: 15200, bonus_rate: 1.8, credit_card: true, total_miles: 27360 },
  { _id: 4, customer_name: 'Paulo Santos', base_miles: 3400, bonus_rate: 1.1, credit_card: true, total_miles: 3740 }
]
```

## Codebeispiele
<a name="multiply-code"></a>

Um ein Codebeispiel für die Verwendung des `$multiply` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function multiplyBonusMiles() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('miles');

  const result = await collection.aggregate([
    { $match: { credit_card: true } },
    {
      $project: {
        customer_name: 1,
        base_miles: 1,
        bonus_rate: 1,
        credit_card: 1,
        total_miles: {
          $multiply: ["$base_miles", "$bonus_rate"]
        }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

multiplyBonusMiles();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def multiply_bonus_miles():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['miles']

    result = list(collection.aggregate([
        {'$match': {'credit_card': True}},
        {
            '$project': {
                'customer_name': 1,
                'base_miles': 1,
                'bonus_rate': 1,
                'credit_card': 1,
                'total_miles': {
                    '$multiply': ['$base_miles', '$bonus_rate']
                }
            }
        }
    ]))

    print(result)
    client.close()

multiply_bonus_miles()
```

------

# \$1 natürlich
<a name="natural"></a>

Der `$natural` Operator in Amazon DocumentDB wird verwendet, um die Dokumente in ihrer natürlichen Reihenfolge zu sortieren, d. h. der Reihenfolge, in der sie in die Sammlung eingefügt wurden. Dies steht im Gegensatz zum Standard-Sortierverhalten, bei dem die Dokumente anhand der Werte der angegebenen Felder sortiert werden.

**Parameter**

Keine

## Beispiel (MongoDB Shell)
<a name="natural-examples"></a>

Das folgende Beispiel zeigt, wie der `$natural` Operator verwendet wird, um die Dokumente in einer Sammlung in ihrer natürlichen Reihenfolge zu sortieren.

**Erstellen Sie Beispieldokumente**

```
db.people.insertMany([
  { "_id": 1, "name": "María García", "age": 28 },
  { "_id": 2, "name": "Arnav Desai", "age": 32 },
  { "_id": 3, "name": "Li Juan", "age": 25 },
  { "_id": 4, "name": "Carlos Salazar", "age": 41 },
  { "_id": 5, "name": "Sofia Martínez", "age": 35 }
]);
```

**Beispiel für eine Abfrage**

```
db.people.find({}, { "_id": 1, "name": 1 }).sort({ "$natural": 1 });
```

**Ausgabe**

```
[
  { "_id": 1, "name": "María García" },
  { "_id": 2, "name": "Arnav Desai" },
  { "_id": 3, "name": "Li Juan" },
  { "_id": 4, "name": "Carlos Salazar" },
  { "_id": 5, "name": "Sofia Martínez" }
]
```

Die Abfrage sortiert die Dokumente in der Sammlung in ihrer natürlichen Reihenfolge, d. h. der Reihenfolge, in der sie eingefügt wurden.

## Codebeispiele
<a name="natural-code"></a>

Um ein Codebeispiel für die Verwendung des `$natural` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('people');

  const documents = await collection.find({}, { projection: { _id: 1, name: 1 } })
    .sort({ $natural: 1 })
    .toArray();

  console.log(documents);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['people']

    documents = list(collection.find({}, {'_id': 1, 'name': 1}).sort('$natural', 1))
    print(documents)

    client.close()

example()
```

------

# \$1ne
<a name="ne-aggregation"></a>

Der `$ne` Aggregationsoperator vergleicht zwei Werte und gibt zurück, `true` wenn sie nicht gleich sind, andernfalls gibt er zurück`false`.

**Parameter**
+ `expression1`: Der erste Wert, der verglichen werden soll.
+ `expression2`: Der zweite zu vergleichende Wert.

## Beispiel (MongoDB Shell)
<a name="ne-aggregation-examples"></a>

Das folgende Beispiel zeigt, wie der `$ne` Operator verwendet wird, um Bestellungen mit Statusänderungen zu identifizieren.

**Erstellen Sie Beispieldokumente**

```
db.orders.insertMany([
  { _id: 1, orderId: "A123", status: "shipped", expectedStatus: "shipped" },
  { _id: 2, orderId: "B456", status: "pending", expectedStatus: "shipped" },
  { _id: 3, orderId: "C789", status: "delivered", expectedStatus: "delivered" }
]);
```

**Beispiel für eine Abfrage**

```
db.orders.aggregate([
  {
    $project: {
      orderId: 1,
      status: 1,
      expectedStatus: 1,
      needsAttention: { $ne: ["$status", "$expectedStatus"] }
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 1, orderId: 'A123', status: 'shipped', expectedStatus: 'shipped', needsAttention: false },
  { _id: 2, orderId: 'B456', status: 'pending', expectedStatus: 'shipped', needsAttention: true },
  { _id: 3, orderId: 'C789', status: 'delivered', expectedStatus: 'delivered', needsAttention: false }
]
```

## Codebeispiele
<a name="ne-aggregation-code"></a>

Um ein Codebeispiel für die Verwendung des `$ne` Aggregationsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('orders');

  const result = await collection.aggregate([
    {
      $project: {
        orderId: 1,
        status: 1,
        expectedStatus: 1,
        needsAttention: { $ne: ["$status", "$expectedStatus"] }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['orders']

    result = list(collection.aggregate([
        {
            '$project': {
                'orderId': 1,
                'status': 1,
                'expectedStatus': 1,
                'needsAttention': { '$ne': ['$status', '$expectedStatus'] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1not
<a name="not-aggregation"></a>

Der `$not` Aggregationsoperator führt eine logische NOT-Operation für einen Ausdruck aus. Er gibt zurück`true`, ob der Ausdruck zu `false` ausgewertet wird und `false` ob der Ausdruck zu ausgewertet wird. `true`

**Parameter**
+ `expression`: Der Ausdruck, der negiert werden soll.

## Beispiel (MongoDB Shell)
<a name="not-aggregation-examples"></a>

Das folgende Beispiel zeigt, wie der `$not` Operator verwendet wird, um boolesche Werte umzukehren.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { _id: 1, name: "Alice", active: true },
  { _id: 2, name: "Bob", active: false },
  { _id: 3, name: "Charlie", active: true }
]);
```

**Beispiel für eine Abfrage**

```
db.users.aggregate([
  {
    $project: {
      name: 1,
      active: 1,
      inactive: { $not: ["$active"] }
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 1, name: 'Alice', active: true, inactive: false },
  { _id: 2, name: 'Bob', active: false, inactive: true },
  { _id: 3, name: 'Charlie', active: true, inactive: false }
]
```

## Codebeispiele
<a name="not-aggregation-code"></a>

Um ein Codebeispiel für die Verwendung des `$not` Aggregationsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('users');

  const result = await collection.aggregate([
    {
      $project: {
        name: 1,
        active: 1,
        inactive: { $not: ["$active"] }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['users']

    result = list(collection.aggregate([
        {
            '$project': {
                'name': 1,
                'active': 1,
                'inactive': { '$not': ['$active'] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1objectToArray
<a name="objectToArray"></a>

Der `$objectToArray` Aggregationsoperator in Amazon DocumentDB konvertiert ein Objekt (oder Dokument) in ein Array. Die Eingabe für den Operator ist ein Dokument, und die Ausgabe besteht aus einem Array-Element für jedes Feld-Wert-Paar im Eingabedokument. Dieser Operator ist nützlich, wenn Sie mit den einzelnen Feldern eines Dokuments als Array arbeiten müssen, z. B. wenn Sie das Dokument mit dem Höchst- oder Minimalwert für ein bestimmtes Feld suchen möchten.

**Parameter**
+ `expression`: Der Dokumentausdruck, der in ein Array konvertiert werden soll.

## Beispiel (MongoDB Shell)
<a name="objectToArray-examples"></a>

Das folgende Beispiel zeigt, wie der `$objectToArray` Operator verwendet werden kann, um das Dokument mit dem maximalen Inventar für eine Videoverleihkette zu finden.

**Erstellen Sie Beispieldokumente**

```
db.videos.insertMany([
  {
    "_id": 1,
    "name": "Live Soft",
    "inventory": {
      "Des Moines": 1000,
      "Ames": 500
    }
  },
  {
    "_id": 2,
    "name": "Top Pilot",
    "inventory": {
      "Mason City": 250,
      "Des Moines": 1000
    }
  },
  {
    "_id": 3,
    "name": "Romancing the Rock",
    "inventory": {
      "Mason City": 250,
      "Ames": 500
    }
  },
  {
    "_id": 4,
    "name": "Bravemind",
    "inventory": {
      "Mason City": 250,
      "Des Moines": 1000,
      "Ames": 500
    }
  }
]);
```

**Beispiel für eine Abfrage**

```
db.videos.aggregate([
  {
    $project: {
      name: 1,
      videos: {
        $objectToArray: "$inventory"
      }
    }
  },
  {
    $unwind: "$videos"
  },
  {
    $group: {
      _id: "$name",
      maxInventory: {
        $max: "$videos.v"
      }
    }
  }
]);
```

**Ausgabe**

```
[
  {
    "_id": "Bravemind",
    "maxInventory": 1000
  },
  {
    "_id": "Live Soft",
    "maxInventory": 1000
  },
  {
    "_id": "Romancing the Rock",
    "maxInventory": 500
  },
  {
    "_id": "Top Pilot",
    "maxInventory": 1000
  }
]
```

## Codebeispiele
<a name="objectToArray-code"></a>

Um ein Codebeispiel für die Verwendung des `$objectToArray` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findMaxInventory() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const videos = db.collection('videos');

  const result = await videos.aggregate([
    {
      $project: {
        name: 1,
        videos: {
          $objectToArray: "$inventory"
        }
      }
    },
    {
      $unwind: "$videos"
    },
    {
      $group: {
        _id: "$name",
        maxInventory: {
          $max: "$videos.v"
        }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

findMaxInventory();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_max_inventory():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    videos = db['videos']

    result = list(videos.aggregate([
        {
            '$project': {
                'name': 1,
                'videos': {
                    '$objectToArray': '$inventory'
                }
            }
        },
        {
            '$unwind': '$videos'
        },
        {
            '$group': {
                '_id': '$name',
                'maxInventory': {
                    '$max': '$videos.v'
                }
            }
        }
    ]))

    print(result)
    client.close()

find_max_inventory()
```

------

# \$1or
<a name="or-aggregation"></a>

Der `$or` Aggregationsoperator wertet mehrere Ausdrücke aus und gibt zurück, `true` ob mindestens ein Ausdruck zu ausgewertet wird. `true` Er gibt `false` nur zurück, wenn es bei allen Ausdrücken der Fall ist. `false`

**Parameter**
+ `expressions`: Eine Reihe von Ausdrücken, die ausgewertet werden sollen.

## Beispiel (MongoDB Shell)
<a name="or-aggregation-examples"></a>

Das folgende Beispiel zeigt, wie der `$or` Operator verwendet wird, um zu überprüfen, ob Produkte eines von mehreren Kriterien erfüllen.

**Erstellen Sie Beispieldokumente**

```
db.items.insertMany([
  { _id: 1, name: "Widget", price: 150, onSale: false },
  { _id: 2, name: "Gadget", price: 45, onSale: false },
  { _id: 3, name: "Tool", price: 200, onSale: true }
]);
```

**Beispiel für eine Abfrage**

```
db.items.aggregate([
  {
    $project: {
      name: 1,
      price: 1,
      onSale: 1,
      goodDeal: {
        $or: [
          { $lt: ["$price", 50] },
          { $eq: ["$onSale", true] }
        ]
      }
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 1, name: 'Widget', price: 150, onSale: false, goodDeal: false },
  { _id: 2, name: 'Gadget', price: 45, onSale: false, goodDeal: true },
  { _id: 3, name: 'Tool', price: 200, onSale: true, goodDeal: true }
]
```

## Codebeispiele
<a name="or-aggregation-code"></a>

Um ein Codebeispiel für die Verwendung des `$or` Aggregationsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('items');

  const result = await collection.aggregate([
    {
      $project: {
        name: 1,
        price: 1,
        onSale: 1,
        goodDeal: {
          $or: [
            { $lt: ["$price", 50] },
            { $eq: ["$onSale", true] }
          ]
        }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['items']

    result = list(collection.aggregate([
        {
            '$project': {
                'name': 1,
                'price': 1,
                'onSale': 1,
                'goodDeal': {
                    '$or': [
                        { '$lt': ['$price', 50] },
                        { '$eq': ['$onSale', True] }
                    ]
                }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1out
<a name="out"></a>

Der `$out` Operator in Amazon DocumentDB wird verwendet, um das Ergebnis einer Aggregationspipeline in eine angegebene Sammlung zu schreiben.

`$out`sollte die letzte Phase in der Pipeline sein.

**Parameter**
+ `output_collection`: Der Name der Ausgabesammlung, in die die Aggregationsergebnisse geschrieben werden sollen.

**Hinweis**: Wenn die Sammlung bereits existiert, wird sie durch die Ergebnisse der Aggregationsphase ersetzt.

## Beispiel (MongoDB Shell)
<a name="out-examples"></a>

Das folgende Beispiel zeigt, wie der `$out` Operator in Amazon DocumentDB verwendet wird, um die Ergebnisse einer Aggregationspipeline in eine neue Sammlung zu schreiben.

**Erstellen Sie Beispieldokumente**

```
db.products.insertMany([
  { _id: 1, name: "Wireless Headphones", category: "Electronics", price: 100.0 },
  { _id: 2, name: "Smartphone", category: "Electronics", price: 200.0 },
  { _id: 3, name: "JavaScript Guide", category: "Books", price: 50.0 },
  { _id: 4, name: "Database Design Handbook", category: "Books", price: 75.0 }
]);
```

**Beispiel für eine Abfrage**

```
db.products.aggregate([
  { $group: { _id: "$category", totalPrice: { $sum: "$price" } } },
  { $out: "product_categories" }
])
```

**Ausgabe**

Keine (die Ergebnisse werden in die Ausgabesammlung geschrieben).

Die Aggregationspipeline gruppiert die Produkte nach Kategorien und berechnet den Gesamtpreis der Artikel für jede Kategorie. Der `$out` Operator schreibt die Ergebnisse in eine neue Sammlung mit dem Namen „product\$1categories“.

**So zeigen Sie die Ergebnisse in der Ausgabesammlung an:**

```
db.product_categories.find()
[
{ "_id" : "Books", "totalPrice" : 125 },
{ "_id" : "Electronics", "totalPrice" : 300 }
]
```

## Codebeispiele
<a name="out-code"></a>

Um ein Codebeispiel für die Verwendung des `$out` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function demo_out_operator() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const products = db.collection('products');

  // Execute aggregation with $out - results are stored in 'product_categories' collection
  await products.aggregate([
    { $group: { _id: "$category", totalPrice: { $sum: "$price" } } },
    { $out: "product_categories" }
  ]).toArray();

  // Retrieve the results from the output collection (limited to 20 records)
  const productCategories = db.collection('product_categories');
  const results = await productCategories.find({}).limit(20).toArray();
  
  console.log('Results stored in product_categories collection:', results);
  await client.close();
}

demo_out_operator();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def demo_out_operator():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    products = db['products']

    # Execute aggregation with $out - results are stored in 'product_categories' collection
    list(products.aggregate([
        { '$group': { '_id': '$category', 'totalPrice': { '$sum': '$price' } } },
        { '$out': 'product_categories' }
    ]))

    # Retrieve the results from the output collection (limited to 20 records)
    product_categories = db['product_categories']
    results = list(product_categories.find({}).limit(20))
    
    print('Results stored in product_categories collection:', results)
    client.close()

demo_out_operator()
```

------

# \$1pow
<a name="pow"></a>

Eingeführt in 8.0

Mit dem `$pow` Operator in Amazon DocumentDB können Sie eine Zahl potenzieren. Dies kann nützlich sein, um exponentielle Berechnungen innerhalb Ihrer Aggregationspipeline durchzuführen.

**Parameter**
+ `<number>`(erforderlich): Die Zahl, die potenziert werden soll.
+ `<exponent>`(erforderlich): Die Potenz, auf die die Zahl erhöht werden soll.

## Beispiel (MongoDB Shell)
<a name="pow-examples"></a>

Das folgende Beispiel zeigt, wie der `$pow` Operator verwendet wird, um das Quadrat einer Zahl zu berechnen.

**Erstellen Sie Beispieldokumente**

```
db.numbers.insertMany([
  { "_id": 1, "value": 2 },
  { "_id": 2, "value": 3 },
  { "_id": 3, "value": 4 }
]);
```

**Beispiel für eine Abfrage**

```
db.numbers.aggregate([
  { $addFields: { "square": { $pow: ["$value", 2] } } }
])
```

**Ausgabe**

```
[
  { "_id": 1, "value": 2, "square": 4 },
  { "_id": 2, "value": 3, "square": 9 },
  { "_id": 3, "value": 4, "square": 16 }
]
```

## Codebeispiele
<a name="pow-code"></a>

Um ein Codebeispiel für die Verwendung des `$pow` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

Hier ist ein Beispiel für die Verwendung des \$1pow-Operators in einer Node.js -Anwendung:

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('numbers');

  const result = await collection.aggregate([
    { $addFields: { "square": { $pow: ["$value", 2] } } }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

Hier ist ein Beispiel für die Verwendung des \$1pow-Operators in einer Python-Anwendung:

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['numbers']

    result = list(collection.aggregate([
        { "$addFields": { "square": { "$pow": ["$value", 2] } } }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1push
<a name="push-aggregation"></a>

Der `$push` Aggregationsoperator gibt für jede Gruppe ein Array mit allen Werten aus einem angegebenen Ausdruck zurück. Er wird normalerweise innerhalb der `$group` Phase verwendet, um Werte in einem Array zu akkumulieren.

**Parameter**
+ `expression`: Der Ausdruck, der für jedes Dokument in der Gruppe ausgewertet werden soll.

## Beispiel (MongoDB Shell)
<a name="push-aggregation-examples"></a>

Das folgende Beispiel zeigt, wie der `$push` Operator verwendet wird, um alle Produktnamen für jede Kategorie zu sammeln.

**Erstellen Sie Beispieldokumente**

```
db.sales.insertMany([
  { _id: 1, category: "Electronics", product: "Laptop", amount: 1200 },
  { _id: 2, category: "Electronics", product: "Mouse", amount: 25 },
  { _id: 3, category: "Furniture", product: "Desk", amount: 350 },
  { _id: 4, category: "Furniture", product: "Chair", amount: 150 },
  { _id: 5, category: "Electronics", product: "Keyboard", amount: 75 }
]);
```

**Beispiel für eine Abfrage**

```
db.sales.aggregate([
  {
    $group: {
      _id: "$category",
      products: { $push: "$product" }
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 'Furniture', products: [ 'Desk', 'Chair' ] },
  { _id: 'Electronics', products: [ 'Laptop', 'Mouse', 'Keyboard' ] }
]
```

## Codebeispiele
<a name="push-aggregation-code"></a>

Um ein Codebeispiel für die Verwendung des `$push` Aggregationsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('sales');

  const result = await collection.aggregate([
    {
      $group: {
        _id: "$category",
        products: { $push: "$product" }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['sales']

    result = list(collection.aggregate([
        {
            '$group': {
                '_id': '$category',
                'products': { '$push': '$product' }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1project
<a name="project"></a>

Mit dem `$project` Operator in Amazon DocumentDB können Sie Felder selektiv in Ausgabedokumente ein- oder ausschließen, Werte an die nächste Pipeline-Phase übergeben und neue Felder aus Eingabedokumentwerten berechnen.

**Parameter**
+ `field`: Das Feld, das in die Ausgabedokumente ein- oder ausgeschlossen werden soll. Dabei kann es sich um einen Feldpfad handeln (z. B. „a.b.c“).
+ `1`oder`true`: Schließt das Feld in die Ausgabe ein.
+ `0`oder`false`: Schließt das Feld von der Ausgabe aus.

## Beispiel (MongoDB Shell)
<a name="project-examples"></a>

Das folgende Beispiel demonstriert die Verwendung des `$project` Operators bei der Erfassung von Studenten

**Erstellen Sie Beispieldokumente**

```
db.students.insertMany([
  { "_id": 1, "name": "Alejandro Rosalez", "math": 85, "science": 92, "grade": "A" },
  { "_id": 2, "name": "Carlos Salazar", "math": 78, "science": 84, "grade": "B" },
  { "_id": 3, "name": "Nikhil Jayashankar", "math": 95, "science": 89, "grade": "A" },
  { "_id": 4, "name": "Shirley Rodriguez", "math": 72, "science": 76, "grade": "B" }
  ]);
```

Diese Abfrage umfasst nur die `math` Felder `name` und in der Ausgabe. Das `_id` Feld ist standardmäßig enthalten, sofern es nicht ausdrücklich ausgeschlossen ist.

```
db.students.aggregate([
  { $project: { "name": 1, "math": 1 } }
])
```

**Ausgabe**

```
{ _id: 1, name: "Alejandro Rosalez", math: 85 }
{ _id: 2, name: "Carlos Salazar", math: 78 }
{ _id: 3, name: "Nikhil Jayashankar", math: 95 }
{ _id: 4, name: "Shirley Rodriguez", math: 72 }
```

Diese Abfrage schließt die `_id` Felder `grade` und aus der Ausgabe aus und zeigt alle anderen Felder (`name`,`math`,`science`) an.

```
db.students.aggregate([
  { $project: { "grade": 0, "_id": 0 } }
])
```

**Ausgabe**

```
{ name: "Alejandro Rosalez", math: 85, science: 92 }
{ name: "Carlos Salazar", math: 78, science: 84 }
{ name: "Nikhil Jayashankar", math: 95, science: 89 }
{ name: "Shirley Rodriguez", math: 72, science: 76 }
```

## Codebeispiele
<a name="project-code"></a>

Um ein Codebeispiel für die Verwendung des `$project` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('students');

  const result = await collection.aggregate([
    { $project: { "name": 1, "math": 1 } }
  ]).toArray();
  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['students']

    result = list(collection.aggregate([
        { '$project': { 'name': 1, 'math': 1 } }
    ]))
    print(result)

    client.close()

example()
```

------

# \$1 Rand
<a name="rand"></a>

Neu ab Version 8.0

Der `$rand` Operator in Amazon DocumentDB wird verwendet, um eine Zufallszahl zwischen 0 und 1 zu generieren.

**Parameter**

Keine

## Beispiel (MongoDB Shell)
<a name="rand-examples"></a>

Das folgende Beispiel zeigt, wie der `$rand` Operator verwendet wird, um nach dem Zufallsprinzip zwei Dokumente aus der `temp` Sammlung auszuwählen.

**Erstellen Sie Beispieldokumente**

```
db.items.insertMany([
  { "name": "pencil", "quantity": 110 },
  { "name": "pen", "quantity": 159 }
])
```

**Beispiel für eine Abfrage**

```
db.items.aggregate([
  {
    $project: {
      randomValue: { $rand: {} }
    }
  }
])
```

**Ausgabe**

```
[
  {
    _id: ObjectId('6924a5edd66dcae121d29517'),
    randomValue: 0.8615243955294392
  },
  {
    _id: ObjectId('6924a5edd66dcae121d29518'),
    randomValue: 0.22815483022099903
  }
]
```

## Codebeispiele
<a name="rand-code"></a>

Um ein Codebeispiel für die Verwendung des `$rand` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('items');

  const result = await collection.aggregate([
    {
      $project: {
        randomValue: { $rand: {} }
      }
    }
  ]).toArray();

  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
  client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
  db = client['test']
  collection = db['items']

  result = list(collection.aggregate([
      {
        "$project": {
          "randomValue": { "$rand": {} }
        }
      }
  ]))

  print(result)

  client.close()

example()
```

------

# \$1range
<a name="range"></a>

Der `$range` Aggregationsoperator in Amazon DocumentDB wird verwendet, um ein Array von aufeinanderfolgenden Zahlen innerhalb eines bestimmten Bereichs zu erstellen. Dieser Operator ist besonders nützlich für die Generierung von Zahlenfolgen, wie z. B. Meilenmarkierungen für Versorgungsstationen in einem Rennen, wie in den folgenden Beispielen gezeigt.

**Parameter**
+ `start`: Der Startwert für den Bereich.
+ `end`: Der Endwert für den Bereich.
+ `step`: (optional) Der Schrittwert, der beim Generieren des Bereichs verwendet werden soll. Wenn nicht angegeben, ist der Standard-Schrittwert 1.

## Beispiel (MongoDB Shell)
<a name="range-examples"></a>

In diesem Beispiel verwenden wir den `$range` Operator, um die Meilenmarkierungen für Wasserstationen in einem Radrennen zu generieren.

**Erstellen Sie Beispieldokumente**

```
db.races.insertMany([
  { _id: 0, race: "STP", distance: 206 },
  { _id: 1, race: "RSVP", distance: 160 },
  { _id: 2, race: "Chilly Hilly", distance: 33 },
  { _id: 3, race: "Flying Wheels", distance: 100 }
]);
```

**Beispiel für eine Abfrage**

```
db.races.aggregate([
  {
    $project: {
      race: 1,
      "waterStations": { $range: [20, "$distance", 20] }
    }
  }
]);
```

**Ausgabe**

```
[
  {
    _id: 0,
    race: 'STP',
    waterStations: [
       20,  40,  60,  80,
      100, 120, 140, 160,
      180, 200
    ]
  },
  {
    _id: 1,
    race: 'RSVP',
    waterStations: [
       20,  40,  60, 80,
      100, 120, 140
    ]
  },
  { _id: 2, race: 'Chilly Hilly', waterStations: [ 20 ] },
  { _id: 3, race: 'Flying Wheels', waterStations: [ 20, 40, 60, 80 ] }
]
```

## Codebeispiele
<a name="range-code"></a>

Um ein Codebeispiel für die Verwendung des `$range` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');

  try {
    await client.connect();
    const db = client.db('test');
    const collection = db.collection('races');

    const pipeline = [
      {
        $project: {
          race: 1,
          waterStations: { $range: [20, "$distance", 20] } 
        }
      }
    ];

    const results = await collection.aggregate(pipeline).toArray();

    console.dir(results, { depth: null });

  } finally {
    await client.close();
  }
}

example().catch(console.error);
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():

  client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')

  try:
      db = client.test
      collection = db.races

      pipeline = [
          {
              "$project": {
                  "race": 1,
                  "waterStations": { "$range": [20, "$distance", 20] }
              }
          }
      ]

      results = collection.aggregate(pipeline)

      for doc in results:
          print(doc)

  except Exception as e:
      print(f"An error occurred: {e}")

  finally:
      client.close()

example()
```

------

# \$1redact
<a name="redact"></a>

Die `$redact` Aggregationsphase in Amazon DocumentDB wird verwendet, um Inhalte anhand der Werte der angegebenen Felder selektiv in die Ausgabedokumente ein- oder auszuschließen. Dies ist besonders nützlich in Szenarien, in denen Sie die Sichtbarkeit sensibler Daten auf der Grundlage von Zugriffsebenen oder Benutzerberechtigungen kontrollieren müssen.

**Parameter**
+ `$cond`: Ein Ausdruck, der entweder `$$KEEP``$$PRUNE`, oder `$$DESCEND` für jedes Feld im Dokument ausgewertet wird.
+ `$$KEEP`: Behält das aktuelle Feld im Ausgabedokument bei.
+ `$$PRUNE`: Entfernt das aktuelle Feld aus dem Ausgabedokument.
+ `$$DESCEND`: Wendet den `$redact` Schritt rekursiv auf das aktuelle Feld an, bei dem es sich um ein Objekt oder ein Array handelt.

## Beispiel (MongoDB Shell)
<a name="redact-examples"></a>

In diesem Beispiel verwenden wir die `$redact` Phase, um Bestellungen nach ihrem Status zu filtern und nur Bestellungen mit bestimmten Statuswerten anzuzeigen.

**Erstellen Sie Beispieldokumente**

```
db.orders.insert([
  { "_id": 1, "status": "shipped", "customer": "Carlos Salazar", "total": 150.00, "date": "2025-01-15" },
  { "_id": 2, "status": "processing", "customer": "Saanvi Sarkar", "total": 89.99, "date": "2025-01-20" },
  { "_id": 3, "status": "cancelled", "customer": "Zhang Wei", "total": 220.50, "date": "2025-01-18" }
])
```

**Beispiel für eine Abfrage**

```
db.orders.aggregate([
  {
    $redact: {
      $cond: {
        if: { $in: ["$status", ["shipped", "processing"]] },
        then: "$$KEEP",
        else: "$$PRUNE"
      }
    }
  }
])
```

**Ausgabe**

```
[
  { _id: 1, status: 'shipped', customer: 'Carlos Salazar', total: 150, date: '2025-01-15' },
  { _id: 2, status: 'processing', customer: 'Saanvi Sarkar', total: 89.99, date: '2025-01-20' }
]
```

In diesem Beispiel überprüft die `$redact` Phase den Wert des `status` Felds in jedem Dokument. Wenn `status` es sich um „Versand“ oder „Bearbeitung“ handelt, wird das Dokument aufbewahrt (`$$KEEP`). Andernfalls wird das Dokument beschnitten ()`$$PRUNE`.

## Codebeispiele
<a name="redact-code"></a>

Um ein Codebeispiel für die Verwendung des `$redact` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('orders');

  const result = await collection.aggregate([
    {
      $redact: {
        $cond: {
          if: { $in: ['$status', ['shipped', 'processing']] },
          then: '$$KEEP',
          else: '$$PRUNE'
        }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['orders']

    result = list(collection.aggregate([
        {
            '$redact': {
                '$cond': {
                    'if': { '$in': ['$status', ['shipped', 'processing']] },
                    'then': '$$KEEP',
                    'else': '$$PRUNE'
                }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1reduce
<a name="reduce"></a>

Der `$reduce` Aggregationsoperator in Amazon DocumentDB wird verwendet, um eine Funktion mit zwei Argumenten kumulativ auf die Elemente eines Arrays anzuwenden, um das Array auf einen einzigen Wert zu reduzieren. Dieser Operator ist besonders nützlich für die Durchführung komplexer Berechnungen oder Transformationen von Array-Daten innerhalb der Aggregationspipeline.

**Parameter**
+ `input`: Das Array, das reduziert werden soll.
+ `initialValue`: Der Anfangswert, der bei der Reduktionsoperation verwendet werden soll.
+ `in`: Der Ausdruck, der für jedes Element des `input` Arrays ausgewertet werden soll. Dieser Ausdruck sollte einen Wert zurückgeben, der in der nächsten Iteration der Reduktion verwendet wird.

## Beispiel (MongoDB Shell)
<a name="reduce-examples"></a>

Das folgende Beispiel zeigt, wie der `$reduce` Operator verwendet wird, um die Summe aller Elemente in einem Array zu berechnen.

**Erstellen Sie Beispieldokumente**

```
db.orders.insertMany([
  { "_id": 1, "items": [1, 2, 3, 4, 5] },
  { "_id": 2, "items": [10, 20, 30] },
  { "_id": 3, "items": [5, 15, 25, 35] },
  { "_id": 4, "items": [100, 200] }
])
```

**Beispiel für eine Abfrage**

```
db.orders.aggregate([
  {
    $project: {
      total: {
        $reduce: {
          input: "$items",
          initialValue: 0,
          in: { $add: ["$$value", "$$this"] }
        }
      }
    }
  }
])
```

**Ausgabe**

```
[
  { "_id": 1, "total": 15 },
  { "_id": 2, "total": 60 },
  { "_id": 3, "total": 80 },
  { "_id": 4, "total": 300 }
]
```

Der `$reduce` Operator iteriert über das `items` Array und fügt jedes Element dem `initialValue` Wert 0 hinzu. Das Ergebnis ist die Summe aller Elemente im Array.

## Codebeispiele
<a name="reduce-code"></a>

Um ein Codebeispiel für die Verwendung des `$reduce` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

Hier ist ein Beispiel für die Verwendung des `$reduce` Operators in einer Node.js -Anwendung:

```
const { MongoClient } = require("mongodb");

async function main() {
  const client = await MongoClient.connect("mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false");
  const db = client.db("test");
  const orders = db.collection("orders");

  const result = await orders.aggregate([
    {
      $project: {
        total: {
          $reduce: {
            input: "$items",
            initialValue: 0,
            in: { $add: ["$$value", "$$this"] }
          }
        }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

main();
```

------
#### [ Python ]

Hier ist ein Beispiel für die Verwendung des `$reduce` Operators in einer Python-Anwendung:

```
from pymongo import MongoClient

def main():
    client = MongoClient("mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false")
    db = client["test"]
    orders = db["orders"]

    result = list(orders.aggregate([
        {
            "$project": {
                "total": {
                    "$reduce": {
                        "input": "$items",
                        "initialValue": 0,
                        "in": { "$add": ["$$value", "$$this"] }
                    }
                }
            }
        }
    ]))

    print(result)
    client.close()

if __name__ == "__main__":
    main()
```

------

# \$1RegexFind
<a name="regexFind"></a>

Neu ab Version 5.0.

Wird von Elastic Cluster nicht unterstützt.

Der `$regexFind` Operator in Amazon DocumentDB wird verwendet, um den Abgleich regulärer Ausdrücke für Zeichenkettenfelder in Dokumenten durchzuführen. Es ermöglicht Ihnen, nach bestimmten Teilzeichenfolgen zu suchen und diese zu extrahieren, die einem bestimmten Muster für reguläre Ausdrücke entsprechen.

**Parameter**
+ `input`: Das Zeichenkettenfeld oder der Ausdruck, nach dem gesucht werden soll.
+ `regex`: Das Muster für reguläre Ausdrücke, nach dem gesucht werden soll.
+ `options`: (optional) Ein Objekt, das optionale Parameter für den regulären Ausdruck angibt, z. B. Berücksichtigung von Groß- und Kleinschreibung und mehrzeiliger Abgleich. Unterstützte Optionen sind `i` (ohne Berücksichtigung der Groß-/Kleinschreibung) und `m` (mehrzeilig).

## Beispiel (MongoDB Shell)
<a name="regexFind-examples"></a>

Das folgende Beispiel zeigt, wie der `$regexFind` Operator verwendet wird, um nach Dokumenten zu suchen, bei denen das `name` Feld einem bestimmten Muster für reguläre Ausdrücke entspricht.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { "_id": 1, name: "John Doe", email: "john@example.com" },
  { "_id": 2, name: "Diego Ramirez", email: "diego@example.com" },
  { "_id": 3, name: "Alejandro Rosalez", email: "alejandro@example.com" },
  { "_id": 4, name: "Shirley Rodriguez", email: "shirley@example.com" }
]);
```

**Beispiel für eine Abfrage**

```
db.users.aggregate([
  {
    $project: {
      names: {
        $regexFind: { input: '$name', regex: 'j', options: 'i' }
      }
    }
  },
  { $match: {names: {$ne: null}}}
])
```

Diese Abfrage gibt alle Dokumente zurück, in denen das `name` Feld den Buchstaben „j“ enthält (Groß- und Kleinschreibung wird nicht beachtet).

**Ausgabe**

```
[
  { _id: 1, names: { match: 'J', idx: 0, captures: [] } }
]
```

**Hinweis:** Wenn Ihre Abfrage Amazon DocumentDB Planner Version 1 verwendet, müssen Sie einen Hinweis verwenden, um einen Index zu verwenden. Ohne einen Hinweis führt die Abfrage möglicherweise einen Sammlungsscan durch. Um Ihre Planer-Version zu überprüfen und mehr über die Verwendung von Hinweisen zu erfahren, lesen Sie die [Amazon DocumentDB Query Planner-Dokumentation] (https://docs.aws.amazon.com/documentdb/latest/developerguide/query-planner.html).

## Codebeispiele
<a name="regexFind-code"></a>

Um ein Codebeispiel für die Verwendung des `$regexFind` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const users = db.collection('users');

  const results = await users.aggregate([
    { $project: { names: { $regexFind: { input: "$name", regex: "john", options: "i" }}}},
    { $match: {names: {$ne: null}}}
  ]).toArray();
  

  console.log(results);

  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
users = db['users']

results = list(users.aggregate([
    { "$project": { "names": { "$regexFind": { "input": "$name", "regex": "john", "options": "i" }}}},
    { "$match": {"names": {"$ne": None}}}
]))

print(results)

client.close()
```

------

# \$1regexFindAll
<a name="regexFindAll"></a>

Eingeführt in 5.0

Der `$regexFindAll` Operator in Amazon DocumentDB wird verwendet, um den Abgleich regulärer Ausdrücke für Zeichenkettenfelder in Dokumenten durchzuführen. Es ermöglicht Ihnen, nach bestimmten Teilzeichenfolgen zu suchen und diese zu extrahieren, die einem bestimmten Muster für reguläre Ausdrücke entsprechen. Dabei werden alle Treffer des regulären Ausdrucks zurückgegeben.

**Parameter**
+ `input`: Das Zeichenkettenfeld oder der Ausdruck, nach dem gesucht werden soll.
+ `regex`: Das Muster für reguläre Ausdrücke, nach dem gesucht werden soll.
+ `options`: (optional) Ein Objekt, das optionale Parameter für den regulären Ausdruck angibt, z. B. Berücksichtigung von Groß- und Kleinschreibung und mehrzeiliger Abgleich. Unterstützte Optionen sind `i` (ohne Berücksichtigung der Groß-/Kleinschreibung) und `m` (mehrzeilig).

## Beispiel (MongoDB Shell)
<a name="regexFindAll-examples"></a>

Das folgende Beispiel zeigt, wie der `$regexFindAll` Operator verwendet wird, um alle Buchstabenfolgen aus dem `email` Feld zu extrahieren.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { _id: 1, name: "John Doe", email: "john@example.com", phone: "555-1234" },
  { _id: 2, name: "Jane Roe", email: "jane@example.com", phone: "555-5678" },
  { _id: 3, name: "Carlos Salazar", email: "carlos@example.com", phone: "555-3456" },
  { _id: 4, name: "Saanvi Sarkar", email: "saanvi@example.com", phone: "555-7890" }
  
]);
```

**Beispiel für eine Abfrage**

```
db.users.aggregate([
  {
    $project: {
      name: 1,
      emailMatches: {
        $regexFindAll: { input: '$email', regex: '[a-z]+', options: 'i' }
      }
    }
  }
])
```

**Ausgabe**

```
[
  {
    _id: 1,
    name: 'John Doe',
    emailMatches: [
      { match: 'john', idx: 0, captures: [] },
      { match: 'example', idx: 5, captures: [] },
      { match: 'com', idx: 13, captures: [] }
    ]
  },
  {
    _id: 2,
    name: 'Jane Roe',
    emailMatches: [
      { match: 'jane', idx: 0, captures: [] },
      { match: 'example', idx: 5, captures: [] },
      { match: 'com', idx: 13, captures: [] }
    ]
  },
  {
    _id: 3,
    name: 'Carlos Salazar',
    emailMatches: [
      { match: 'carlos', idx: 0, captures: [] },
      { match: 'example', idx: 7, captures: [] },
      { match: 'com', idx: 15, captures: [] }
    ]
  },
  {
    _id: 4,
    name: 'Saanvi Sarkar',
    emailMatches: [
      { match: 'saanvi', idx: 0, captures: [] },
      { match: 'example', idx: 7, captures: [] },
      { match: 'com', idx: 15, captures: [] }
    ]
  }
]
```

**Hinweis:** Wenn Ihre Abfrage Amazon DocumentDB Planner Version 1 verwendet, müssen Sie einen Hinweis verwenden, um einen Index zu verwenden. Ohne einen Hinweis führt die Abfrage möglicherweise einen Sammlungsscan durch. Um Ihre Planer-Version zu überprüfen und mehr über die Verwendung von Hinweisen zu erfahren, lesen Sie die [Amazon DocumentDB Query Planner-Dokumentation] (https://docs.aws.amazon.com/documentdb/latest/developerguide/query-planner.html).

## Codebeispiele
<a name="regexFindAll-code"></a>

Um ein Codebeispiel für die Verwendung des `$regexFindAll` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

Hier ist ein Beispiel für die Verwendung des `$regexFind` Operators in einer Node.js -Anwendung:

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const users = db.collection('users');

  const results = await users.aggregate([
    {
      $project: {
        name: 1,
        emailMatches: {
          $regexFindAll: { input: "$email", regex: "[a-z]+", options: "i" }
        }
      }
    }
  ]).toArray();
  
  console.log(JSON.stringify(results, null, 2));

  await client.close();
}

main();
```

------
#### [ Python ]

Hier ist ein Beispiel für die Verwendung des `$regexFind` Operators in einer Python-Anwendung:

```
from pymongo import MongoClient

client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
users = db['users']

results = list(users.aggregate([
    { 
        "$project": { 
            "name": 1,
            "emailMatches": { 
                "$regexFindAll": { 
                    "input": "$email", 
                    "regex": "[a-z]+", 
                    "options": "i" 
                }
            }
        }
    }
]))

print(results)

client.close()
```

------

# \$1RegexMatch
<a name="regexMatch"></a>

Neu ab Version 5.0. Wird von Elastic Cluster nicht unterstützt.

Der `$regexMatch` Operator in Amazon DocumentDB wird verwendet, um den Abgleich regulärer Ausdrücke für Zeichenkettenfelder durchzuführen. Er gibt einen booleschen Wert (`true`oder`false`) zurück, der angibt, ob die Eingabezeichenfolge dem angegebenen Muster entspricht.

**Parameter**
+ `input`: Die Zeichenfolge, die anhand des regulären Ausdrucks getestet werden soll.
+ `regex`: Das Muster für reguläre Ausdrücke, das abgeglichen werden soll.
+ `options`: (Optional) Markierungen zur Änderung des Verhaltens regulärer Ausdrücke, z. B. beim Abgleich ohne Berücksichtigung der Groß- und Kleinschreibung (`i`) oder beim mehrzeiligen Abgleich (). `m`

## Beispiel (MongoDB Shell)
<a name="regexMatch-examples"></a>

Das folgende Beispiel zeigt, wie der `$regexMatch` Operator verwendet wird, um zu überprüfen, ob Namen mit dem Buchstaben 'M' beginnen. Der Operator gibt `false` für jedes `true` Dokument oder zurück.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { "_id":1, name: "María García", email: "maría@example.com" },
  { "_id":2, name: "Arnav Desai", email: "arnav@example.com" },
  { "_id":3, name: "Martha Rivera", email: "martha@example.com" },
  { "_id":4, name: "Richard Roe", email: "richard@example.com" },

]);
```

**Beispiel für eine Abfrage**

```
db.users.aggregate([
  {
    $project: {
      name: 1,
      startsWithM: {
        $regexMatch: {
          input: "$name",
          regex: "^M",
          options: "i"
        }
      }
    }
  }
]);
```

**Ausgabe**

```
{ _id: 1, name: 'María García', startsWithM: true },
{ _id: 2, name: 'Arnav Desai', startsWithM: false },
{ _id: 3, name: 'Martha Rivera', startsWithM: true },
{ _id: 4, name: 'Richard Roe', startsWithM: false }
```

## Codebeispiele
<a name="regexMatch-code"></a>

Um ein Codebeispiel für die Verwendung des `$regexMatch` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function checkNamePattern() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('users');

  const result = await collection.aggregate([
    {
      $project: {
        name: 1,
        startsWithM: {
          $regexMatch: {
            input: "$name",
            regex: "^M",
            options: "i"
          }
        }
      }
    }
  ]).toArray();

  console.log(result);

  await client.close();
}

checkNamePattern();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def check_name_pattern():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.users

    result = list(collection.aggregate([
        {
            '$project': {
                'name': 1,
                'startsWithM': {
                    '$regexMatch': {
                        'input': '$name',
                        'regex': '^M',
                        'options': 'i'
                    }
                }
            }
        }
    ]))

    print(result)

    client.close()

check_name_pattern()
```

------

# \$1 Alles ersetzen
<a name="replaceAll"></a>

In 5.0 eingeführt

Der `$replaceAll` Operator in Amazon DocumentDB wird verwendet, um alle Vorkommen eines bestimmten Zeichenkettenmusters in einem Feld durch eine neue Zeichenfolge zu ersetzen. Dieser Operator kann für Aufgaben wie Datennormalisierung, Textreinigung und Zeichenkettenmanipulation nützlich sein.

**Parameter**
+ `input`: Das Feld oder der Ausdruck, der die zu ersetzende Zeichenfolge enthält.
+ `find`: Das Zeichenkettenmuster, nach dem gesucht und ersetzt werden soll.
+ `replacement`: Die Zeichenfolge, durch die die übereinstimmenden Vorkommen ersetzt werden sollen.

## Beispiel (MongoDB Shell)
<a name="replaceAll-examples"></a>

Das folgende Beispiel zeigt, wie der `$replaceAll` Operator in einer Aggregationspipeline verwendet wird, um alle Vorkommen der Zeichenfolge „Chocolatier“ durch „Chocolate Co“ zu ersetzen. im Feld „BrandName“ einer Kollektion „Produkte“.

**Erstellen Sie Beispieldokumente**

```
db.products.insertMany([
  {
    "_id": 1,
    "productId": "PROD-0Y9GL0",
    "brandName": "Gordon's Chocolatier",
    "category": "CPG",
    "rating": {
      "average": 4.8
    }
  },
  {
    "_id": 2,
    "productId": "PROD-1X2YZ3",
    "brandName": "Premium Chocolatier",
    "category": "CPG",
    "rating": {
      "average": 4.5
    }
  },
  {
    "_id": 3,
    "productId": "PROD-Y2E9H5",
    "name": "Nutrition Co. - Original Corn Flakes Cereal",
    "category": "Breakfast Cereals",
    "price": 8.5
  }
]);
```

**Beispiel für eine Abfrage**

```
db.products.aggregate([
  {
    $addFields: {
      "brandName": {
        $replaceAll: {
          input: "$brandName",
          find: "Chocolatier",
          replacement: "Chocolate Co."
        }
      }
    }
  }
])
```

**Ausgabe**

```
[
  {
    _id: 1,
    productId: 'PROD-0Y9GL0',
    brandName: "Gordon's Chocolate Co.",
    category: 'CPG',
    rating: { average: 4.8 }
  },
  {
    _id: 2,
    productId: 'PROD-1X2YZ3',
    brandName: 'Premium Chocolate Co.',
    category: 'CPG',
    rating: { average: 4.5 }
  },
  {
    _id: 3,
    productId: 'PROD-Y2E9H5',
    name: 'Nutrition Co. - Original Corn Flakes Cereal',
    category: 'Breakfast Cereals',
    price: 8.5,
    brandName: null
  }
]
```

## Codebeispiele
<a name="replaceAll-code"></a>

Um ein Codebeispiel für die Verwendung des `$replaceAll` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function replaceAll() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('products');

  const results = await collection.aggregate([
    {
      $addFields: {
        "brandName": {
          $replaceAll: {
            input: "$brandName",
            find: "Chocolatier",
            replacement: "Chocolate Co."
          }
        }
      }
    }
  ]).toArray();

  console.log(results);

  await client.close();
}

replaceAll();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def replace_all():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.products

    results = list(collection.aggregate([
        {
            "$addFields": {
                "brandName": {
                    "$replaceAll": {
                        "input": "$brandName",
                        "find": "Chocolatier",
                        "replacement": "Chocolate Co."
                    }
                }
            }
        }
    ]))

    print(results)

    client.close()

replace_all()
```

------

# \$1 ersetzenEins
<a name="replaceOne"></a>

In 5.0 eingeführt

Der `$replaceOne` Operator in Amazon DocumentDB ist ein Operator für Zeichenkettenausdrücke, der innerhalb von Aggregationspipelines verwendet wird, um das erste Vorkommen einer angegebenen Teilzeichenfolge innerhalb einer Zeichenfolge durch eine Ersatzzeichenfolge zu ersetzen. Dieser Operator unterscheidet Groß- und Kleinschreibung und ersetzt nur die erste gefundene Übereinstimmung.

**Parameter**
+ `input`: Die Zeichenfolge (das Feld), nach der die Suche durchgeführt werden soll.
+ `find`: Die Zeichenfolge, nach der in der Eingabe gesucht werden soll.
+ `replacement`: Die Zeichenfolge, die das erste Vorkommen des Suchbegriffs in der Eingabe (Feld) ersetzen soll.

## Beispiel (MongoDB Shell)
<a name="replaceOne-examples"></a>

Das folgende Beispiel zeigt, wie der `$replaceOne` Operator innerhalb einer Aggregationspipeline verwendet wird, um Teilzeichenfolgen in Produktnamen zu ersetzen.

**Erstellen Sie Beispieldokumente**

```
db.products.insertMany([
  { "_id":1, "productId": "PROD-0Y9GL0", "name": "Gordon's Extra Creamy Milk Chocolate - Pack of 4", "category": "Confectionery", "price": 24.99 },
  { "_id":2, "productId": "PROD-Y2E9H5", "name": "Nutrition Co. - Original Corn Flakes Cereal", "category": "Breakfast Cereals", "price": 8.50 },
  { "_id":3, "productId": "PROD-Z3F8K2", "name": "Gordon's Dark Chocolate (90% Cocoa) Pack - Pack of 4", "category": "Confectionery", "price": 28.99 }
]);
```

**Beispiel für eine Aggregation**

```
db.products.aggregate([
  {
    $addFields: {
      standardizedName: {
        $replaceOne: {
          input: "$name",
          find: "Pack",
          replacement: "Package"
        }
      }
    }
  }
]);
```

**Ausgabe**

Die Ausgabe zeigt, dass nur das erste Vorkommen von „Pack“ in jedem Produktnamen durch „Package“ ersetzt wurde.

```
[
  {
    _id: 1,
    productId: 'PROD-0Y9GL0',
    name: "Gordon's Extra Creamy Milk Chocolate - Pack of 4",
    category: 'Confectionery',
    price: 24.99,
    standardizedName: "Gordon's Extra Creamy Milk Chocolate - Package of 4"
  },
  {
    _id: 2,
    productId: 'PROD-Y2E9H5',
    name: 'Nutrition Co. - Original Corn Flakes Cereal',
    category: 'Breakfast Cereals',
    price: 8.5,
    standardizedName: 'Nutrition Co. - Original Corn Flakes Cereal'
  },
  {
    _id: 3,
    productId: 'PROD-Z3F8K2',
    name: "Gordon's Dark Chocolate (90% Cocoa) Pack - Pack of 4",
    category: 'Confectionery',
    price: 28.99,
    standardizedName: "Gordon's Dark Chocolate (90% Cocoa) Package - Pack of 4"
  }
```

## Codebeispiele
<a name="replaceOne-code"></a>

Um ein Codebeispiel für die Verwendung des `$replaceOne` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function replaceOne() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('products');

  const pipeline = [
    {
      $addFields: {
        standardizedName: {
          $replaceOne: {
            input: '$name',
            find: 'Pack',
            replacement: 'Package'
          }
        }
      }
    }
  ];

  const result = await collection.aggregate(pipeline).toArray();
  console.log(result);

  await client.close();
}

replaceOne();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def replaceOne():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['products']

    pipeline = [
        {
            '$addFields': {
                'standardizedName': {
                    '$replaceOne': {
                        'input': '$name',
                        'find': 'Pack',
                        'replacement': 'Package'
                    }
                }
            }
        }
    ]

    result = list(collection.aggregate(pipeline))
    print(result)

    client.close()

replaceOne()
```

------

# \$1replaceRoot
<a name="replaceRoot"></a>

Der `$replaceRoot` Operator wird verwendet, um das Stammdokument durch das angegebene eingebettete Dokument zu ersetzen. Dies ist nützlich, wenn Sie ein verschachteltes Dokument auf die oberste Ebene hochstufen oder Ihre Datenausgabe neu strukturieren möchten.

**Parameter**
+ `newRoot`: Das neue Stammdokument, das das bestehende Stammdokument ersetzen wird.

## Beispiel (MongoDB Shell)
<a name="replaceRoot-examples"></a>

Dieses Beispiel zeigt, wie Lieferadressinformationen aus Kundenbestellungen extrahiert werden, was für die Generierung von Versandetiketten oder Adresslisten nützlich ist.

**Erstellen Sie Beispieldokumente**

```
db.orders.insertMany([
  {
    "_id":1, "orderId": "ORD-2024-001", "customerId": "CUST-12345", "orderDate": "2024-01-15", "shippingAddress": { "name": "María García", "street": "123 Main St", "city": "Seattle", "state": "WA", "zipCode": "98101", "country": "USA" },"totalAmount": 149.99 },
  { "_id":2, "orderId": "ORD-2024-002", "customerId": "CUST-67890", "orderDate": "2024-01-16", "shippingAddress": { "name": "Arnav Desai", "street": "456 Oak Ave", "city": "Portland", "state": "OR", "zipCode": "97201", "country": "USA" }, "totalAmount": 89.50 } ])
```

**Beispiel für eine Abfrage**

```
db.orders.aggregate([
  {
    $replaceRoot: {
      newRoot: "$shippingAddress"
    }
  }
])
```

**Ausgabe**

```
{
    name: 'María García',
    street: '123 Main St',
    city: 'Seattle',
    state: 'WA',
    zipCode: '98101',
    country: 'USA'
  },
  {
    name: 'Arnav Desai',
    street: '456 Oak Ave',
    city: 'Portland',
    state: 'OR',
    zipCode: '97201',
    country: 'USA'
  }
```

## Codebeispiele
<a name="replaceRoot-code"></a>

Um ein Codebeispiel für die Verwendung des `$replaceRoot` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function extractShippingAddresses() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('orders');

  const result = await collection.aggregate([
    {
      $replaceRoot: {
        newRoot: "$shippingAddress"
      }
    }
  ]).toArray();

  console.log(result);

  await client.close();
}

extractShippingAddresses();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def extract_shipping_addresses():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['orders']

    result = list(collection.aggregate([
        {
            "$replaceRoot": {
                "newRoot": "$shippingAddress"
            }
        }
    ]))

    print(result)

    client.close()

extract_shipping_addresses()
```

------

# \$1 ersetzendurch
<a name="replaceWith"></a>

Neu ab Version 8.0

Wird von Elastic Cluster nicht unterstützt.

Die `$replaceWith` Aggregationsphase in Amazon DocumentDB wird verwendet, um das Eingabedokument durch ein neues Dokument zu ersetzen. Alle vorhandenen Felder im Eingabedokument, einschließlich des Felds \$1id, werden durch das neue Dokument ersetzt. `$replaceWith`wird häufig verwendet, um Dokumente zu vereinfachen oder ein eingebettetes Dokument auf die oberste Ebene heraufzustufen.

**Parameter**
+ `<replacement>`(erforderlich): Das neue Dokument, das das bestehende Dokument ersetzen wird.

## Beispiel (MongoDB Shell)
<a name="replaceWith-examples"></a>

Das folgende Beispiel zeigt, wie der `$replaceWith` Operator verwendet wird, um ein vorhandenes Dokument in einer Amazon DocumentDB-Sammlung zu ersetzen.

**Erstellen Sie Beispieldokumente**

```
db.restaurants.insertMany([
  {
    "restaurantId": "REST-0Y9GL0",
    "name": "Biryani Adda",
    "cuisine": "Indian",
    "ratings": [ 3, 4, 3, 2, 2, 4, 1, 5, 5, 5 ]
  },
  {
    "restaurantId": "REST-8L2PX9",
    "name": "The Burger Spot",
    "cuisine": "American",
    "ratings": [ 2, 3, 4, 5, 3, 1, 1, 2, 4 ]
  }
]);
```

**Beispiel für eine Abfrage**

```
db.restaurants.aggregate([
  { $replaceWith: {
      name: "$name",
      cuisine: "$cuisine",
      rating: { $avg: "$ratings" }
    }
  }
]);
```

**Ausgabe**

```
[
  {
    name: 'Biryani Adda',
    cuisine: 'Indian',
    rating: 3.4
  },
  {
    name: 'The Burger Spot',
    cuisine: 'American',
    rating: 2.7777777777777777
  }
]
```

## Codebeispiele
<a name="replaceWith-code"></a>

Um ein Codebeispiel für die Verwendung des `$replaceWith` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function replaceDoc() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('restaurants');

  const result = await collection.aggregate([
    { $replaceWith: {
        name: "description_index",
        cuisine: 2,
        rating: { $avg: "$ratings" }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

replaceDoc();
```

------
#### [ Python ]

```
from pymongo import MongoClient


def replace_document():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.restaurants

    result = list(collection.aggregate([
        {
            '$replaceWith': {
                'name': "$name",
                'cuisine': "$cuisine",
                'rating': { '$avg': "$ratings"}
            }
        }
    ]))

    print(result)
    client.close()

replace_document()
```

------

# \$1reverseArray
<a name="reverseArray"></a>

Der `$reverseArray` Operator in Amazon DocumentDB wird verwendet, um die Elemente eines Arrays in der angegebenen Reihenfolge umzukehren. Dieser Operator ist nützlich, wenn Sie die Elemente eines Arrays in umgekehrter Richtung neu anordnen müssen.

**Parameter**
+ `expression`: Der Array-Ausdruck, der umgekehrt werden soll.

## Beispiel (MongoDB Shell)
<a name="reverseArray-examples"></a>

Das folgende Beispiel zeigt, wie der `$reverseArray` Operator verwendet wird, um die Reihenfolge der Elemente in einem Array umzukehren.

**Erstellen Sie Beispieldokumente**

```
db.miles.insertMany([
  { "_id" : 1, "member_since" : ISODate("1987-01-01T00:00:00Z"), "credit_card" : false, "flight_miles" : [ 1205, 2560, 880 ]},
  { "_id" : 2, "member_since" : ISODate("1982-01-01T00:00:00Z"), "credit_card" : true, "flight_miles" : [ 1205, 2560, 890, 2780]},
  { "_id" : 3, "member_since" : ISODate("1999-01-01T00:00:00Z"), "credit_card" : true, "flight_miles" : [ 1205, 880]}
]);
```

**Beispiel für eine Abfrage**

```
db.miles.aggregate([
  {
    $project: {
      _id: 1,
      member_since: 1,
      credit_card: 1,
      reversed_flight_miles: { $reverseArray: "$flight_miles" }
    }
  }
]);
```

**Ausgabe**

```
{ "_id" : 1, "member_since" : ISODate("1987-01-01T00:00:00Z"), "credit_card" : false, "reversed_flight_miles" : [ 880, 2560, 1205 ] }
{ "_id" : 2, "member_since" : ISODate("1982-01-01T00:00:00Z"), "credit_card" : true, "reversed_flight_miles" : [ 2780, 890, 2560, 1205 ] }
{ "_id" : 3, "member_since" : ISODate("1999-01-01T00:00:00Z"), "credit_card" : true, "reversed_flight_miles" : [ 880, 1205 ] }
```

In diesem Beispiel wird der `$reverseArray` Operator verwendet, um die Reihenfolge des `flight_miles` Arrays umzukehren. Das resultierende `reversed_flight_miles` Feld in der Ausgabe zeigt die Elemente des Arrays in umgekehrter Reihenfolge.

## Codebeispiele
<a name="reverseArray-code"></a>

Um ein Codebeispiel für die Verwendung des `$reverseArray` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

Hier ist ein Beispiel für die Verwendung des `$reverseArray` Operators in einer Node.js -Anwendung:

```
const { MongoClient } = require('mongodb');

async function reverseArray() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('miles');

  const result = await collection.aggregate([
    {
      $project: {
        _id: 1,
        member_since: 1,
        credit_card: 1,
        reversed_flight_miles: { $reverseArray: '$flight_miles' }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

reverseArray();
```

------
#### [ Python ]

Hier ist ein Beispiel für die Verwendung des `$reverseArray` Operators in einer Python-Anwendung:

```
from pymongo import MongoClient

def reverse_array():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.miles

    result = list(collection.aggregate([
        {
            '$project': {
                '_id': 1,
                'member_since': 1,
                'credit_card': 1,
                'reversed_flight_miles': { '$reverseArray': '$flight_miles' }
            }
        }
    ]))

    print(result)
    client.close()

reverse_array()
```

------

# \$1rtrim
<a name="rtrim"></a>

Neu ab Version 4.0.

Wird von Elastic Cluster nicht unterstützt.

Der `$rtrim` Operator in Amazon DocumentDB wird verwendet, um nachfolgende Zeichen aus einer Zeichenfolge zu entfernen. Standardmäßig entfernt er abschließende Leerzeichen, aber Sie können auch eine Reihe von Zeichen angeben, die entfernt werden sollen, indem Sie das Argument chars übergeben.

**Parameter**
+ `input`: Die Eingabezeichenfolge, aus der nachfolgende Leerzeichen entfernt werden sollen.
+ `chars`: (optional) Um bestimmte Zeichen zu entfernen.

## Beispiel (MongoDB Shell)
<a name="rtrim-examples"></a>

Das folgende Beispiel zeigt, wie der `$rtrim` Operator verwendet wird, um nachfolgende angegebene Zeichen (“ \$1“) aus einer Zeichenfolge zu entfernen.

**Erstellen Sie Beispieldokumente**

```
db.collection.insert([
  { "name": "John Doe*  ", "age": 30 },
  { "name": "Jane Smith  ", "age": 25 },
  { "name": "Bob Johnson", "age": 35 }
]);
```

**Beispiel für eine Abfrage**

```
db.collection.aggregate([
  {
    $project: {
      _id: 0,
      name: { $rtrim: { input: "$name", chars: " *" } }, 
      age: 1
    }
  }
]);
```

**Ausgabe**

```
[
  { age: 30, name: 'John Doe' },
  { age: 25, name: 'Jane Smith' },
  { age: 35, name: 'Bob Johnson' }
]
```

## Codebeispiele
<a name="rtrim-code"></a>

Um ein Codebeispiel für die Verwendung des `$rtrim` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient, Bson } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');

  try {

    const db = client.db('test');
    const collection = db.collection('collection');  

    const pipeline = [
      {
        $project: {
          _id: 0,
          name: { $rtrim: { input: "$name", chars: " *" } },
          age: 1
        }
      }
    ];

    const results = await collection.aggregate(pipeline).toArray();
    console.dir(results, { depth: null });

  } catch (err) {
    console.error('Error occurred:', err);
  } finally {
    await client.close();
  }
}

example().catch(console.error);
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')

    try:

        db = client.test
        collection = db.collection

        pipeline = [
            {
                "$project": {
                    "_id": 0,
                    "name": { "$rtrim": { "input": "$name", "chars": " *" } },
                    "age": 1
                }
            }
        ]

        results = collection.aggregate(pipeline)

        for doc in results:
            print(doc)

    except Exception as e:
        print(f"An error occurred: {e}")

    finally:
        client.close()

example()
```

------

# \$1sample
<a name="sample"></a>

Die `$sample` Aggregationsphase in Amazon DocumentDB wird verwendet, um nach dem Zufallsprinzip eine bestimmte Anzahl von Dokumenten aus einer Sammlung auszuwählen. Dies ist nützlich für Aufgaben wie Datenanalyse, Tests und Generierung von Stichproben für die weitere Verarbeitung.

**Parameter**
+ `size`: Die Anzahl der Dokumente, die nach dem Zufallsprinzip ausgewählt werden sollen.

## Beispiel (MongoDB Shell)
<a name="sample-examples"></a>

Das folgende Beispiel zeigt, wie der `$sample` Stagingbereich verwendet wird, um nach dem Zufallsprinzip zwei Dokumente aus der `temp` Sammlung auszuwählen.

**Erstellen Sie Beispieldokumente**

```
db.temp.insertMany([
  { "_id": 1, "temperature": 97.1, "humidity": 0.60, "timestamp": ISODate("2019-03-21T21:17:22.425Z") },
  { "_id": 2, "temperature": 98.2, "humidity": 0.59, "timestamp": ISODate("2019-03-21T21:17:22.425Z") },
  { "_id": 3, "temperature": 96.8, "humidity": 0.61, "timestamp": ISODate("2019-03-21T21:17:22.425Z") },
  { "_id": 4, "temperature": 97.9, "humidity": 0.61, "timestamp": ISODate("2019-03-21T21:17:22.425Z") },
  { "_id": 5, "temperature": 97.5, "humidity": 0.60, "timestamp": ISODate("2019-03-21T21:17:22.425Z") },
  { "_id": 6, "temperature": 98.0, "humidity": 0.59, "timestamp": ISODate("2019-03-21T21:17:22.425Z") },
  { "_id": 7, "temperature": 97.2, "humidity": 0.60, "timestamp": ISODate("2019-03-21T21:17:22.425Z") },
  { "_id": 8, "temperature": 98.1, "humidity": 0.59, "timestamp": ISODate("2019-03-21T21:17:22.425Z") },
  { "_id": 9, "temperature": 96.9, "humidity": 0.62, "timestamp": ISODate("2019-03-21T21:17:22.425Z") },
  { "_id": 10, "temperature": 97.7, "humidity": 0.60, "timestamp": ISODate("2019-03-21T21:17:22.425Z") }
]);
```

**Beispiel für eine Abfrage**

```
db.temp.aggregate([
   { $sample: { size: 2 } }
])
```

**Ausgabe**

```
{ "_id" : 4, "temperature" : 97.9, "humidity" : 0.61, "timestamp" : ISODate("2019-03-21T21:17:22.425Z") }
{ "_id" : 9, "temperature" : 96.9, "humidity" : 0.62, "timestamp" : ISODate("2019-03-21T21:17:22.425Z") }
```

Wie die Ergebnisse zeigen, wurden 2 der 10 Dokumente nach dem Zufallsprinzip ausgewählt. Sie können diese Dokumente nun verwenden, um einen Durchschnitt zu ermitteln oder min/max Berechnungen durchzuführen.

## Codebeispiele
<a name="sample-code"></a>

Um ein Codebeispiel für die Verwendung des `$sample` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function sampleDocuments() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('temp');

  const result = await collection.aggregate([
    { $sample: { size: 2 } }
  ]).toArray();

  console.log(result);
  await client.close();
}

sampleDocuments();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def sample_documents():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['temp']

    result = list(collection.aggregate([
        { '$sample': { 'size': 2 } }
    ]))

    print(result)
    client.close()

sample_documents()
```

------

# \$1suche
<a name="search"></a>

Neu ab Version 5.0.

Der `$search` Operator in Amazon DocumentDB wird verwendet, um Textsuchfunktionen bereitzustellen.

**Parameter**

Keine

## Beispiel (MongoDB Shell)
<a name="search-examples"></a>

Das folgende Beispiel zeigt, wie der `$search` Operator verwendet wird, um eine Textsuchabfrage durchzuführen.

**Erstellen Sie Beispieldokumente**

```
db.textcollection.createIndex({"description": "text"});

db.textcollection.insertMany([
  { _id: 1, name: "John Doe", description: "This is a sample document about John Doe." },
  { _id: 2, name: "Jane Smith", description: "This is a sample document about Jane Smith." },
  { _id: 3, name: "Bob Johnson", description: "This is a sample document about Bob Johnson." },
  { _id: 4, name: "Jon Jeffries", description: "This is a sample document about Jon Jeffries." }
]);
```

**Beispiel für eine Abfrage**

```
db.textcollection.find(
  { $text: { $search: "John" } }
);
```

**Ausgabe**

```
[
  {
    _id: 1,
    name: 'John Doe',
    description: 'This is a sample document about John Doe.'
  }
]
```

## Codebeispiele
<a name="search-code"></a>

Um ein Codebeispiel für die Verwendung des `$search` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findWithText() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('textcollection');

  const result = await collection.find(
    { $text: { $search: "John" } }
  ).sort({ score: { $meta: "textScore" } }).toArray();

  console.log(result);
  client.close();
}

findWithText();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_with_text():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['textcollection']

    result = list(collection.find(
        { '$text': { '$search': 'John' } }
    ))

    print(result)
    client.close()

find_with_text()
```

------

# \$1second
<a name="second"></a>

Der `$second` Operator in Amazon DocumentDB extrahiert die Sekundenkomponente aus einem Datum oder Zeitstempel. Er wird verwendet, um den Sekundenwert aus einem Datums- oder Zeitstempelfeld abzurufen.

**Parameter**
+ `expression`: Das Datums- oder Zeitstempelfeld, aus dem der Sekundenwert extrahiert werden soll. Dieser Ausdruck kann ein Feldpfad oder ein beliebiger gültiger Ausdruck sein, der in ein Datum oder einen Zeitstempel aufgelöst wird.

## Beispiel (MongoDB Shell)
<a name="second-examples"></a>

Das folgende Beispiel zeigt, wie der `$second` Operator verwendet wird, um die Sekundenkomponente aus einem Datumsfeld zu extrahieren.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { name: "John", dob: new Date("1990-05-15T12:30:45Z") },
  { name: "Jane", dob: new Date("1985-09-20T23:59:59Z") },
  { name: "Bob", dob: new Date("2000-01-01T00:00:00Z") }
]);
```

**Beispiel für eine Abfrage**

```
db.users.aggregate([{ $project: { name: 1, dobSeconds: { $second: "$dob" } } }])
```

**Ausgabe**

```
[
  { "_id" : ObjectId("6089a9c306a829d1f8b456a1"), "name" : "John", "dobSeconds" : 45 },
  { "_id" : ObjectId("6089a9c306a829d1f8b456a2"), "name" : "Jane", "dobSeconds" : 59 },
  { "_id" : ObjectId("6089a9c306a829d1f8b456a3"), "name" : "Bob", "dobSeconds" : 0 }
]
```

## Codebeispiele
<a name="second-code"></a>

Um ein Codebeispiel für die Verwendung des `$second` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const users = db.collection('users');

  const result = await users.aggregate([{ $project: { name: 1, dobSeconds: { $second: '$dob' } } }]).toArray();
  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    users = db['users']

    result = list(users.aggregate([{'$project': {'name': 1, 'dobSeconds': {'$second': '$dob'}}}]))
    print(result)

    client.close()

example ()
```

------

# \$1set
<a name="set-stage"></a>

Neu ab Version 8.0

Wird von Elastic Cluster nicht unterstützt.

Die `$set` Aggregationsphase in Amazon DocumentDB ermöglicht es Ihnen, während einer Aggregationspipeline neue Felder hinzuzufügen oder bestehende Feldwerte in der Dokumentation zu aktualisieren.

**Parameter**
+ `expression`: Der auszuwertende Ausdruck. Dies kann ein beliebiger gültiger Aggregationsausdruck sein, einschließlich Feldverweise und arithmetischer Operationen.

## Beispiel (MongoDB Shell)
<a name="set-stage-examples"></a>

Das folgende Beispiel zeigt die Verwendung der `$set` Aggregationsphase zur Berechnung von Summen durch Multiplikation des Felds mit dem `quantity` Feld. `price`

**Erstellen Sie Beispieldokumente**

```
db.inventory.insertMany([
  { item: "pencil", quantity: 100, price: 0.24},
  { item: "pen", quantity: 204, price: 1.78 }
]);
```

**Beispiel für eine Aggregation**

```
db.inventory.aggregate([
  {
    $set: {
      total: { $multiply: ["$quantity", "$price"] }
    }
  }
])
```

**Ausgabe**

```
[
  {
    _id: ObjectId('69248951d66dcae121d2950d'),
    item: 'pencil',
    quantity: 100,
    price: 0.24,
    total: 24
  },
  {
    _id: ObjectId('69248951d66dcae121d2950e'),
    item: 'pen',
    quantity: 204,
    price: 1.78,
    total: 363.12
  }
]
```

## Codebeispiele
<a name="set-stage-code"></a>

Um ein Codebeispiel für die Verwendung des `$set` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const inventory = db.collection('inventory');

  const result = await inventory.aggregate([
      {
        $set: {
          total: { $multiply: ["$quantity", "$price"] }
        }
      }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    inventory = db['inventory']

    result = list(inventory.aggregate([
      {
        "$set": {
          "total": { "$multiply": ["$quantity", "$price"] }
        }
      }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1setDifference
<a name="setDifference"></a>

Neu ab Version 4.0.

Der `$setDifference` Operator in Amazon DocumentDB wird verwendet, um zwei Sätze zu vergleichen und die Elemente zurückzugeben, die sich in der ersten Gruppe, aber nicht in der zweiten Gruppe befinden. Dieser Operator ist nützlich, um die eindeutigen Elemente zwischen zwei Sätzen zu finden.

**Parameter**
+ `firstSet`: Der erste Satz, der verglichen werden soll.
+ `secondSet`: Der zweite zu vergleichende Satz.

## Beispiel (MongoDB Shell)
<a name="setDifference-examples"></a>

Das folgende Beispiel zeigt, wie der `$setDifference` Operator verwendet wird, um die eindeutigen Elemente zwischen zwei Sätzen zu finden.

**Erstellen Sie Beispieldokumente**

```
db.collection.insertMany([
  { _id: 1, fruits: ["apple", "banana", "cherry", "date"] },
  { _id: 2, fruits: ["banana", "cherry", "date", "elderberry"] }
]);
```

**Beispiel für eine Abfrage**

```
db.collection.aggregate([
  {
    $project: {
      uniqueFruits: { $setDifference: ["$fruits", ["banana", "cherry", "date"]] }
    }
  }
]);
```

**Ausgabe**

```
[
  { "_id": 1, "uniqueFruits": ["apple"] },
  { "_id": 2, "uniqueFruits": ["elderberry"] }
]
```

Die Abfrage führt die folgenden Schritte aus:

1. Sie verwendet die `$project` Phase, um `uniqueFruits` für jedes Dokument ein neues Feld zu erstellen.

2. Der `$setDifference` Operator vergleicht das `fruits` Array mit dem Array `[&quot;banana&quot;, &quot;cherry&quot;, &quot;date&quot;]` und gibt die eindeutigen Elemente im `fruits` Array zurück.

## Codebeispiele
<a name="setDifference-code"></a>

Um ein Codebeispiel für die Verwendung des `$setDifference` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

Hier ist ein Beispiel für die Verwendung des `$setDifference` Operators in einer Node.js -Anwendung:

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('mycollection');

  // Insert sample documents
  await collection.insertMany([
    { _id: 1, fruits: ["apple", "banana", "cherry", "date"] },
    { _id: 2, fruits: ["banana", "cherry", "date", "elderberry"] }
  ]);

 // Query using $setDifference
  const result = await collection.aggregate([
    {
      $project: {
        uniqueFruits: { $setDifference: ["$fruits", ["banana", "cherry", "date"]] }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

main();
```

------
#### [ Python ]

Hier ist ein Beispiel für die Verwendung des `$setDifference` Operators in einer Python-Anwendung:

```
from pymongo import MongoClient

def main():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['mycollection']

    # Insert sample documents
    collection.insert_many([
        {'_id': 1, 'fruits': ["apple", "banana", "cherry", "date"]},
        {'_id': 2, 'fruits': ["banana", "cherry", "date", "elderberry"]}
    ])

    # Query using $setDifference
    result = list(collection.aggregate([
        {
            '$project': {
                'uniqueFruits': {'$setDifference': ['$fruits', ["banana", "cherry", "date"]]}
            }
        }
    ]))

    print(result)
    client.close()

if __name__ == '__main__':
    main()
```

------

# \$1setEquals
<a name="setEquals"></a>

Der `$setEquals` Operator in Amazon DocumentDB wird verwendet, um festzustellen, ob zwei Sätze gleich sind. Er vergleicht zwei Arrays und gibt zurück, `true` ob sie dieselben unterschiedlichen Elemente enthalten, unabhängig von ihrer Reihenfolge.

**Parameter**
+ `expression1`: Das erste Array, das verglichen werden soll.
+ `expression2`: Das zweite Array, das verglichen werden soll.

## Beispiel (MongoDB Shell)
<a name="setEquals-examples"></a>

Das folgende Beispiel zeigt, wie der `$setEquals` Operator verwendet wird, um zwei Wertesätze zu vergleichen.

**Erstellen Sie Beispieldokumente**

```
db.collection.insertMany([
  { _id: 1, fruits: ["apple", "banana", "cherry"] },
  { _id: 2, fruits: ["banana", "apple", "cherry"] },
  { _id: 3, fruits: ["apple", "banana", "orange"] }
])
```

**Beispiel für eine Abfrage**

```
db.collection.find({
  $expr: {
    $setEquals: ["$fruits", ["apple", "banana", "cherry"]]
  }
})
```

**Ausgabe**

```
{ "_id" : 1, "fruits" : [ "apple", "banana", "cherry" ] }
{ "_id" : 2, "fruits" : [ "banana", "apple", "cherry" ] }
```

Die Abfrage verwendet den `$setEquals` Operator, um das `fruits` Feld jedes Dokuments mit dem Array zu vergleichen`[&quot;apple&quot;, &quot;banana&quot;, &quot;cherry&quot;]`. Die Dokumente, bei denen das `fruits` Feld dem Vergleichsarray entspricht, werden zurückgegeben.

## Codebeispiele
<a name="setEquals-code"></a>

Um ein Codebeispiel für die Verwendung des `$setEquals` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('mycollection');

  // Insert sample documents
  await collection.insertMany([
    { _id: 1, fruits: ["apple", "banana", "cherry"] },
    { _id: 2, fruits: ["banana", "apple", "cherry"] },
    { _id: 3, fruits: ["apple", "banana", "orange"] }
  ]);

  // Query using $setEquals
  const result = await collection.find({
    $expr: {
      $setEquals: ["$fruits", ["apple", "banana", "cherry"]]
    }
  }).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['mycollection']

    # Insert sample documents
    collection.insert_many([
        {"_id": 1, "fruits": ["apple", "banana", "cherry"]},
        {"_id": 2, "fruits": ["banana", "apple", "cherry"]},
        {"_id": 3, "fruits": ["apple", "banana", "orange"]}
    ])

    # Query using $setEquals
    result = list(collection.find({
        "$expr": {
            "$setEquals": ["$fruits", ["apple", "banana", "cherry"]]
        }
    }))

    print(result)
    client.close()

example()
```

------

# \$1setIntersection
<a name="setIntersection"></a>

Der `$setIntersection` Operator in Amazon DocumentDB wird verwendet, um die gemeinsamen Elemente zwischen zwei oder mehr Arrays zurückzugeben. Dieser Operator ist besonders nützlich, wenn Sie mit Datensätzen arbeiten. Er ermöglicht es Ihnen, die Schnittmenge mehrerer Datensätze zu ermitteln.

**Parameter**
+ `array1`: Das erste Array, das sich überschneidet.
+ `array2`: Das zweite Array, das sich überschneiden soll.
+ `arrayN`: (optional) Zusätzliche Arrays, die sich überschneiden sollen.

## Beispiel (MongoDB Shell)
<a name="setIntersection-examples"></a>

Das folgende Beispiel zeigt, wie der `$setIntersection` Operator verwendet wird, um die gemeinsamen Elemente zwischen zwei Arrays zu finden.

**Erstellen Sie Beispieldokumente**

```
db.collection.insertMany([
  { _id: 1, colors: ["red", "blue", "green"] },
  { _id: 2, colors: ["blue", "yellow", "orange"] },
  { _id: 3, colors: ["red", "green", "purple"] }
])
```

**Beispiel für eine Abfrage**

```
db.collection.aggregate([
  { $project: {
      _id: 1,
      commonColors: { $setIntersection: ["$colors", ["red", "blue", "green"]] }
    }
  }
])
```

**Ausgabe**

```
[
  { "_id": 1, "commonColors": ["red", "blue", "green"] },
  { "_id": 2, "commonColors": ["blue"] },
  { "_id": 3, "commonColors": ["red", "green"] }
]
```

## Codebeispiele
<a name="setIntersection-code"></a>

Um ein Codebeispiel für die Verwendung des `$setIntersection` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('mycollection');

  const result = await collection.aggregate([
    {
      $project: {
        _id: 1,
        commonColors: { $setIntersection: ["$colors", ["red", "blue", "green"]] }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['mycollection']

    result = list(collection.aggregate([
        {
            '$project': {
                '_id': 1,
                'commonColors': { '$setIntersection': ["$colors", ["red", "blue", "green"]] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1setIsSubset
<a name="setIsSubset"></a>

Der `$setIsSubset` Operator in Amazon DocumentDB wird verwendet, um festzustellen, ob eine Gruppe von Werten eine Teilmenge einer anderen Menge ist. Er ist nützlich, um mengenbasierte Vergleiche und Operationen mit Array-Feldern durchzuführen.

**Parameter**
+ `field`: Das Feld, auf das der `$setIsSubset` Operator angewendet werden soll.
+ `set`: Das Set, mit dem das Feld verglichen werden soll.

## Beispiel (MongoDB Shell)
<a name="setIsSubset-examples"></a>

Das folgende Beispiel zeigt, wie der `$setIsSubset` Operator verwendet wird, um zu überprüfen, ob das `tags` Feld eine Teilmenge der angegebenen Menge ist.

**Erstellen Sie Beispieldokumente**

```
db.products.insertMany([
  { _id: 1, name: "Product A", tags: ["tag1", "tag2", "tag3"] },
  { _id: 2, name: "Product B", tags: ["tag1", "tag2"] },
  { _id: 3, name: "Product C", tags: ["tag2", "tag3"] }
]);
```

**Beispiel für eine Abfrage**

```
db.products.find({
  $expr: { $setIsSubset: [["tag1", "tag2"], "$tags"] }
})
```

\$1Hinweis: \$1 `$setIsSubset` ist ein Aggregationsoperator und kann nicht direkt in find () -Abfragen verwendet werden. In diesem Beispiel `$expr` wird mit verwendet, `find()` um die Lücke zwischen Abfrageoperatoren und Aggregationsausdrücken zu schließen.

**Ausgabe**

```
[
  { "_id" : 1, "name" : "Product A", "tags" : [ "tag1", "tag2", "tag3" ] },
  { "_id" : 2, "name" : "Product B", "tags" : [ "tag1", "tag2" ] }
]
```

Die Abfrage gibt die Dokumente zurück, bei denen das `tags` Feld eine Teilmenge der Menge ist. `[&quot;tag1&quot;, &quot;tag2&quot;]`

## Codebeispiele
<a name="setIsSubset-code"></a>

Um ein Codebeispiel für die Verwendung des `$setIsSubset` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('products');

  const result = await collection.find({
    $expr: { $setIsSubset: [["tag1", "tag2"], "$tags"] }
  }).toArray();

  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['products']

    result = list(collection.find({
        '$expr': {'$setIsSubset': [['tag1', 'tag2'], '$tags']}
    }))

    print(result)

    client.close()

example()
```

------

# \$1setUnion
<a name="setUnion"></a>

Der `$setUnion` Aggregationsoperator in Amazon DocumentDB wird verwendet, um zwei oder mehr Wertesätze zu kombinieren und eine Menge zurückzugeben, die alle eindeutigen Elemente aus den Eingabesätzen enthält. Dieser Operator ist nützlich, wenn Sie mengenbasierte Operationen für Array-Felder in Ihren Dokumenten ausführen müssen.

**Parameter**
+ `expression1`: Ein Ausdruck, der in ein Array aufgelöst wird.
+ `expression2`: Ein Ausdruck, der in ein Array aufgelöst wird.
+ `expressionN`: Zusätzliche Ausdrücke, die in Arrays aufgelöst werden (optional).

## Beispiel (MongoDB Shell)
<a name="setUnion-examples"></a>

Das folgende Beispiel zeigt, wie der `$setUnion` Operator verwendet wird, um die eindeutigen Elemente aus zwei Array-Feldern in einer Sammlung zu kombinieren.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { _id: 1, name: "Alice", hobbies: ["reading", "swimming"], skills: ["coding", "writing"] },
  { _id: 2, name: "Bob", hobbies: ["cooking", "gardening"], skills: ["coding", "photography"] },
  { _id: 3, name: "Charlie", hobbies: ["reading", "painting"], skills: ["gardening", "music"] }
]);
```

**Beispiel für eine Abfrage**

```
db.users.aggregate([
  {
    $project: {
      name: 1,
      allInterests: { $setUnion: ["$hobbies", "$skills"] }
    }
  }
]);
```

**Ausgabe**

```
[
  { "_id" : 1, "name" : "Alice", "allInterests" : [ "coding", "reading", "swimming", "writing" ] },
  { "_id" : 2, "name" : "Bob", "allInterests" : [ "coding", "cooking", "gardening", "photography" ] },
  { "_id" : 3, "name" : "Charlie", "allInterests" : [ "gardening", "music", "painting", "reading" ] }
]
```

In diesem Beispiel wird der `$setUnion` Operator verwendet, um die eindeutigen Elemente aus den Feldern `hobbies` und `skills` Array für jedes Benutzerdokument zu kombinieren. Das resultierende `allInterests` Feld enthält die Zusammenfassung aller einzigartigen Hobbys und Fähigkeiten für jeden Benutzer.

## Codebeispiele
<a name="setUnion-code"></a>

Um ein Codebeispiel für die Verwendung des `$setUnion` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const users = db.collection('users');

  const result = await users.aggregate([
    {
      $project: {
        _id: 1,
        name: 1,
        allInterests: { $setUnion: ["$hobbies", "$skills"] }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    users = db['users']

    result = list(users.aggregate([
        {
            '$project': {
                '_id': 1,
                'name': 1,
                'allInterests': { '$setUnion': ["$hobbies", "$skills"] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1skip
<a name="skip"></a>

In Amazon DocumentDB wird der `$skip` Operator verwendet, um den Startpunkt der Abfrageergebnisse zu verschieben, sodass Sie eine bestimmte Teilmenge der passenden Dokumente abrufen können. Dies ist besonders nützlich in Paginierungsszenarien, in denen Sie nachfolgende Ergebnisseiten abrufen möchten.

**Parameter**
+ `skip`: Die Anzahl der Dokumente, die übersprungen werden sollen, bevor die verbleibenden Dokumente zurückgegeben werden.

## Beispiel (MongoDB Shell)
<a name="skip-examples"></a>

Das folgende Beispiel zeigt, wie der `$skip` Operator verwendet wird, um die zweite Ergebnisseite (Dokumente 11-20) aus einer Sammlung abzurufen.

**Erstellen Sie Beispieldokumente**

```
db.collection.insert([
  { "name": "Document 1" },
  { "name": "Document 2" },
  { "name": "Document 3" },
  { "name": "Document 4" },
  { "name": "Document 5" },
  { "name": "Document 6" },
  { "name": "Document 7" },
  { "name": "Document 8" },
  { "name": "Document 9" },
  { "name": "Document 10" },
  { "name": "Document 11" },
  { "name": "Document 12" },
  { "name": "Document 13" },
  { "name": "Document 14" },
  { "name": "Document 15" },
  { "name": "Document 16" },
  { "name": "Document 17" },
  { "name": "Document 18" },
  { "name": "Document 19" },
  { "name": "Document 20" }
]);
```

**Beispiel für eine Abfrage**

```
db.collection.find({}, { "name": 1 })
             .skip(10)
             .limit(10);
```

**Ausgabe**

```
[
  { "_id" : ObjectId("..."), "name" : "Document 11" },
  { "_id" : ObjectId("..."), "name" : "Document 12" },
  { "_id" : ObjectId("..."), "name" : "Document 13" },
  { "_id" : ObjectId("..."), "name" : "Document 14" },
  { "_id" : ObjectId("..."), "name" : "Document 15" },
  { "_id" : ObjectId("..."), "name" : "Document 16" },
  { "_id" : ObjectId("..."), "name" : "Document 17" },
  { "_id" : ObjectId("..."), "name" : "Document 18" },
  { "_id" : ObjectId("..."), "name" : "Document 19" },
  { "_id" : ObjectId("..."), "name" : "Document 20" }
]
```

## Codebeispiele
<a name="skip-code"></a>

Um ein Codebeispiel für die Verwendung des `$skip` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('collection');

  const results = await collection.find({}, { projection: { name: 1 } })
                                 .skip(10)
                                 .limit(10)
                                 .toArray();

  console.log(results);

  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def main():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.mydatabase
    collection = db.collection

    results = list(collection.find({}, {'name': 1})
                   .skip(10)
                   .limit(10))

    print(results)

    client.close()

if __name__ == '__main__':
    main()
```

------

# \$1slice
<a name="slice"></a>

Mit dem `$slice` Aggregationsoperator können Sie eine Teilmenge eines Arrays zurückgeben, indem Sie das Array entweder vom Anfang oder vom Ende des Arrays durchqueren. Dies wird verwendet, um eine begrenzte Anzahl von Elementen aus einem Array-Feld anzuzeigen, z. B. die obersten oder untersten N Elemente.

**Parameter**
+ `array`: Das Array-Feld, das aufgeteilt werden soll.
+ `n`: Eine Ganzzahl, die die Anzahl der zurückzugebenden Elemente angibt. Ein positiver Wert beginnt am Anfang des Arrays, während ein negativer Wert am Ende des Arrays beginnt.

## Beispiel (MongoDB Shell)
<a name="slice-examples"></a>

Das folgende Beispiel zeigt, wie Sie `$slice` jedem Koch die ersten beiden Lieblingssüßigkeiten zurückgeben können.

**Erstellen Sie Beispieldokumente**

```
db.sweets.insertMany([
  { "_id" : 1, "name" : "Alvin", "favorites": [ "chocolate", "cake", "toffee", "beignets" ] },
  { "_id" : 2, "name" : "Tom", "favorites": [ "donuts", "pudding", "pie" ] },
  { "_id" : 3, "name" : "Jessica", "favorites": [ "fudge", "smores", "pudding", "cupcakes" ] },
  { "_id" : 4, "name" : "Rachel", "favorites": [ "ice cream" ] }
]);
```

**Beispiel für eine Abfrage**

```
db.sweets.aggregate([
  { $project: { _id: 0, name: 1, topTwoFavorites: { $slice: [ "$favorites", 2 ] } } }
]);
```

**Ausgabe**

```
[
  { name: 'Alvin', topTwoFavorites: [ 'chocolate', 'cake' ] },
  { name: 'Tom', topTwoFavorites: [ 'donuts', 'pudding' ] },
  { name: 'Jessica', topTwoFavorites: [ 'fudge', 'smores' ] },
  { name: 'Rachel', topTwoFavorites: [ 'ice cream' ] }
]
```

In diesem Beispiel wird der `$slice` Operator verwendet, um die ersten beiden Elemente aus dem `favorites` Array für jedes Dokument zu extrahieren.

## Codebeispiele
<a name="slice-code"></a>

Um ein Codebeispiel für die Verwendung des `$slice` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('sweets');

  const result = await collection.aggregate([
    { $project: { name: 1, topTwoFavorites: { $slice: ['$favorites', 2] } } }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['sweets']

    result = list(collection.aggregate([
        { '$project': { 'name': 1, 'topTwoFavorites': { '$slice': ['$favorites', 2] } } }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1size
<a name="size"></a>

Der `$size` Operator wird verwendet, um die Anzahl der Elemente in einem Array-Feld zurückzugeben. Dies kann verwendet werden, um die Anzahl der Elemente in einem Array zu bestimmen, das in einem Dokument gespeichert ist.

**Parameter**
+ `field`: Der Feldpfad, dessen Array-Größe Sie zurückgeben möchten.

## Beispiel (MongoDB Shell)
<a name="size-examples"></a>

Dieses Beispiel zeigt, wie der `$size` Operator verwendet wird, um die Anzahl der Teams zurückzugeben, denen jeder Benutzer folgt.

**Erstellen Sie Beispieldokumente**

```
db.profiles.insertMany([
  { _id: 1, name: "John Doe", teams: ["Acme", "Widgets", "Gadgets"] },
  { _id: 2, name: "Jane Smith", teams: ["Acme", "Gadgets"] },
  { _id: 3, name: "Bob Johnson", teams: ["Acme", "Widgets", "Gadgets"] }
]);
```

**Beispiel für eine Abfrage**

```
db.profiles.aggregate([
  {
    $project: {
      _id: 0,
      name: 1,
      "numberOfTeams": { $size: "$teams" }
    }
  }
])
```

**Ausgabe**

```
[
  { name: 'John Doe', numberOfTeams: 3 },
  { name: 'Jane Smith', numberOfTeams: 2 },
  { name: 'Bob Johnson', numberOfTeams: 3 }
]
```

## Codebeispiele
<a name="size-code"></a>

Um ein Codebeispiel für die Verwendung des `$size` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const profiles = db.collection('profiles');

  const result = await profiles.aggregate([
    {
      $project: {
        item: 1,
        "numberOfTeams": { $size: "$teams" }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def main():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    profiles = db.profiles

    result = list(profiles.aggregate([
        {
            '$project': {
                'item': 1,
                'numberOfTeams': { '$size': '$teams' }
            }
        }
    ]))

    print(result)
    client.close()

if __name__ == "__main__":
    main()
```

------

# \$1sort
<a name="sort"></a>

In der `$sort` Aggregationsphase werden Dokumente in der Pipeline auf der Grundlage der angegebenen Feldwerte sortiert. Dokumente werden gemäß den angegebenen Sortierkriterien in aufsteigender oder absteigender Reihenfolge angeordnet.

**Parameter**
+ `field`: Der Feldname, nach dem sortiert werden soll.
+ `order`: Wird `1` für aufsteigende oder `-1` absteigende Reihenfolge verwendet.

## Beispiel (MongoDB Shell)
<a name="sort-examples"></a>

Das folgende Beispiel zeigt, wie die `$sort` Phase verwendet wird, um Produkte nach Preis in absteigender Reihenfolge zu bestellen.

**Erstellen Sie Beispieldokumente**

```
db.products.insertMany([
  { _id: 1, name: "Laptop", category: "Electronics", price: 1200 },
  { _id: 2, name: "Mouse", category: "Electronics", price: 25 },
  { _id: 3, name: "Desk", category: "Furniture", price: 350 },
  { _id: 4, name: "Chair", category: "Furniture", price: 150 },
  { _id: 5, name: "Monitor", category: "Electronics", price: 400 }
]);
```

**Beispiel für eine Abfrage**

```
db.products.aggregate([
  { $sort: { price: -1 } }
]);
```

**Ausgabe**

```
[
  { _id: 1, name: 'Laptop', category: 'Electronics', price: 1200 },
  { _id: 5, name: 'Monitor', category: 'Electronics', price: 400 },
  { _id: 3, name: 'Desk', category: 'Furniture', price: 350 },
  { _id: 4, name: 'Chair', category: 'Furniture', price: 150 },
  { _id: 2, name: 'Mouse', category: 'Electronics', price: 25 }
]
```

## Codebeispiele
<a name="sort-code"></a>

Um ein Codebeispiel für die Verwendung der `$sort` Aggregationsphase anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('products');

  const result = await collection.aggregate([
    { $sort: { price: -1 } }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['products']

    result = list(collection.aggregate([
        { '$sort': { 'price': -1 } }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1split
<a name="split"></a>

Der `$split` Aggregationsoperator in Amazon DocumentDB wird verwendet, um eine Zeichenfolge auf der Grundlage eines angegebenen Trennzeichens in ein Array von Teilzeichenfolgen aufzuteilen. Dies kann nützlich sein, um komplexe Zeichenkettenfelder zu analysieren und einzelne Komponenten für die weitere Verarbeitung zu extrahieren.

**Parameter**
+ `string`: Die Zeichenfolge, die aufgeteilt werden soll.
+ `delimiter`: Das Zeichen oder die Zeichenfolge, das zum Teilen der Eingabezeichenfolge verwendet wurde.

## Beispiel (MongoDB Shell)
<a name="split-examples"></a>

In diesem Beispiel trennen wir `$split` die Komponenten eines Feldes „Desk“ in ein Array, um die Verarbeitung der Daten zu vereinfachen.

**Erstellen Sie Beispieldokumente**

```
db.people.insertMany([
  { "_id": 1, "Desk": "Düsseldorf-BVV-021" },
  { "_id": 2, "Desk": "Munich-HGG-32a" },
  { "_id": 3, "Desk": "Cologne-ayu-892.50" },
  { "_id": 4, "Desk": "Dortmund-Hop-78" }
]);
```

**Beispiel für eine Abfrage**

```
db.people.aggregate([
  { $project: { parts: { $split: ["$Desk", "-"] } } }
]);
```

**Ausgabe**

```
{ "_id" : 1, "parts" : [ "Düsseldorf", "BVV", "021" ] }
{ "_id" : 2, "parts" : [ "Munich", "HGG", "32a" ] }
{ "_id" : 3, "parts" : [ "Cologne", "ayu", "892.50" ] }
{ "_id" : 4, "parts" : [ "Dortmund", "Hop", "78" ] }
```

Die Ausgabe von `$split` erstellt ein Array, das in der Anwendung verwendet werden kann, um die Informationen für die Mitarbeiter anzuzeigen.

## Codebeispiele
<a name="split-code"></a>

Um ein Codebeispiel für die Verwendung des `$split` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const result = await db.collection('people').aggregate([
    { $project: { parts: { $split: ['$Desk', '-'] } } }
  ]).toArray();
  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    result = list(db.people.aggregate([
        { '$project': { 'parts': { '$split': ['$Desk', '-'] } } }
    ]))
    print(result)
    client.close()

example()
```

------

# \$1sqrt
<a name="sqrt"></a>

Neu ab Version 4.0.

Der `$sqrt` Operator in Amazon DocumentDB wird verwendet, um die Quadratwurzel einer Zahl zu berechnen.

**Parameter**
+ `expression`: Das Argument kann ein beliebiger gültiger Ausdruck sein, solange es zu einer nicht negativen Zahl aufgelöst wird.

## Beispiel (MongoDB Shell)
<a name="sqrt-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$sqrt` Operators zur Berechnung der Quadratwurzel einer Zahl.

**Erstellen Sie Beispieldokumente**

```
db.numbers.insertMany([
  { "_id": 1, "number": 16 },
  { "_id": 2, "number": 36 },
  { "_id": 3, "number": 64 }
]);
```

**Beispiel für eine Abfrage**

```
db.numbers.aggregate([
  { $project: {
    "_id": 1,
    "square_root": { $sqrt: "$number" }
  }}
]);
```

**Ausgabe**

```
[
  { _id: 1, square_root: 4 },
  { _id: 2, square_root: 6 },
  { _id: 3, square_root: 8 }
]
```

## Codebeispiele
<a name="sqrt-code"></a>

Um ein Codebeispiel für die Verwendung des `$sqrt` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');

  try {
      await client.connect();

      const db = client.db('test');
      const collection = db.collection('numbers');

      const pipeline = [
        {
          $project: {
            _id: 1,
            square_root: { $sqrt: '$number' }
          }
        }
      ];

      const results = await collection.aggregate(pipeline).toArray();

      console.dir(results, { depth: null });

    } finally {
      await client.close();
    }
}

example().catch(console.error);
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
  
  client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')

  try:
      db = client.test
      collection = db.numbers

      pipeline = [
          {
              "$project": {
                  "_id": 1,
                  "square_root": { 
                    "$sqrt": "$number" 
                  }
              }
          }
      ]

      results = collection.aggregate(pipeline)

      for doc in results:
          print(doc)

  except Exception as e:
      print(f"An error occurred: {e}")

  finally:
      client.close()

example()
```

------

# \$1strLenBytes
<a name="strLenBytes"></a>

Der `$strLenBytes` Operator in Amazon DocumentDB wird verwendet, um die Länge einer Zeichenfolge in Byte zu bestimmen. Dies ist nützlich, wenn Sie die Speichergröße eines Zeichenkettenfeldes verstehen müssen, insbesondere wenn Sie es mit Unicode-Zeichen zu tun haben, die mehr als ein Byte pro Zeichen verwenden können.

**Parameter**
+ `expression`: Der Zeichenkettenausdruck, dessen Länge berechnet werden soll.

## Beispiel (MongoDB Shell)
<a name="strLenBytes-examples"></a>

Dieses Beispiel zeigt, wie der `$strLenBytes` Operator verwendet wird, um die Länge von Zeichenkettenfeldern in Byte zu berechnen.

**Erstellen Sie Beispieldokumente**

```
db.people.insertMany([
  { "_id": 1, "Desk": "Düsseldorf-BVV-021" },
  { "_id": 2, "Desk": "Munich-HGG-32a" },
  { "_id": 3, "Desk": "Cologne-ayu-892.50" },
  { "_id": 4, "Desk": "Dortmund-Hop-78" }
]);
```

**Beispiel für eine Abfrage**

```
db.people.aggregate([
  {
    $project: {
      "Desk": 1,
      "length": { $strLenBytes: "$Desk" }
    }
  }
])
```

**Ausgabe**

```
{ "_id" : 1, "Desk" : "Düsseldorf-BVV-021", "length" : 19 }
{ "_id" : 2, "Desk" : "Munich-HGG-32a", "length" : 14 }
{ "_id" : 3, "Desk" : "Cologne-ayu-892.50", "length" : 18 }
{ "_id" : 4, "Desk" : "Dortmund-Hop-78", "length" : 15 }
```

Beachten Sie, dass die Länge der Zeichenfolge „Düsseldorf-BVV-021" 19 Byte beträgt, was sich von der Anzahl der Codepunkte (18) unterscheidet, da das Unicode-Zeichen „Ü“ 2 Byte belegt.

## Codebeispiele
<a name="strLenBytes-code"></a>

Um ein Codebeispiel für die Verwendung des `$strLenBytes` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('people');

  const result = await collection.aggregate([
    {
      $project: {
        "Desk": 1,
        "length": { $strLenBytes: "$Desk" }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.people

    result = list(collection.aggregate([
        {
            '$project': {
                "Desk": 1,
                "length": { "$strLenBytes": "$Desk" }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1strLenCP
<a name="strLenCP"></a>

Der `$strLenCP` Operator in Amazon DocumentDB wird verwendet, um die Länge eines Zeichenkettenausdrucks in Codepunkten (Unicode-Zeichen) zu bestimmen. Dies ist nützlich, wenn Sie die Anzahl der Zeichen in einer Zeichenfolge und nicht die Anzahl der Byte kennen müssen.

**Parameter**
+ `expression`: Der Zeichenkettenausdruck, für den die Länge in Codepunkten zurückgegeben werden soll.

## Beispiel (MongoDB Shell)
<a name="strLenCP-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$strLenCP` Operators zur Bestimmung der Länge von Zeichenketten mit Unicode-Zeichen.

**Erstellen Sie Beispieldokumente**

```
db.people.insertMany([
  { "_id": 1, "Desk": "Düsseldorf-BVV-021" },
  { "_id": 2, "Desk": "Munich-HGG-32a" },
  { "_id": 3, "Desk": "Cologne-ayu-892.50" },
  { "_id": 4, "Desk": "Dortmund-Hop-78" }
])
```

**Beispiel für eine Abfrage**

```
db.people.aggregate([
  {
    $project: {
      "Desk": 1,
      "length": { $strLenCP: "$Desk" }
    }
  }
])
```

**Ausgabe**

```
{ "_id" : 1, "Desk" : "Düsseldorf-BVV-021", "length" : 18 }
{ "_id" : 2, "Desk" : "Munich-HGG-32a", "length" : 14 }
{ "_id" : 3, "Desk" : "Cologne-ayu-892.50", "length" : 18 }
{ "_id" : 4, "Desk" : "Dortmund-Hop-78", "length" : 15 }
```

Beachten Sie den Unterschied in der Längenmessung für die Zeichenfolge „Düsseldorf-BVV-021", die ein Unicode-Zeichen (Ü) enthält. Der `$strLenCP` Operator zählt die Anzahl der Unicode-Zeichen korrekt, während der Operator die Anzahl der Byte zählt. `$strLenBytes`

## Codebeispiele
<a name="strLenCP-code"></a>

Um ein Codebeispiel für die Verwendung des `$strLenCP` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

Hier ist ein Beispiel für die Verwendung des `$strLenCP` Operators in einer Node.js -Anwendung mit dem MongoDB-Treiber:

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('people');

  const result = await collection.aggregate([
    {
      $project: {
        "Desk": 1,
        "length": { $strLenCP: "$Desk" }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

Hier ist ein Beispiel für die Verwendung des `$strLenCP` Operators in einer Python-Anwendung mit dem PyMongo Treiber:

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.people

    result = list(collection.aggregate([
        {
            '$project': {
                "Desk": 1,
                "length": { "$strLenCP": "$Desk" }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1strcasecmp
<a name="strcasecmp"></a>

Der `$strcasecmp` Operator in Amazon DocumentDB führt einen Vergleich zwischen zwei Zeichenketten durch, bei dem die Groß- und Kleinschreibung nicht beachtet wird. Er gibt einen Integer-Wert zurück, der den lexikografischen Vergleich der beiden Eingabezeichenfolgen angibt, wobei Unterschiede zwischen Groß- und Kleinschreibung ignoriert werden.

**Parameter**
+ `string1`: Die erste Zeichenfolge, die verglichen werden soll.
+ `string2`: Die zweite zu vergleichende Zeichenfolge.

## Beispiel (MongoDB Shell)
<a name="strcasecmp-examples"></a>

Dieses Beispiel zeigt, wie der `$strcasecmp` Operator verwendet wird, um Zeichenketten mit Schreibtischstandorten in einer `people` Sammlung zu vergleichen, wobei Unterschiede zwischen Groß- und Kleinschreibung ignoriert werden.

**Erstellen Sie Beispieldokumente**

```
db.people.insertMany([
  { "_id": 1, "Desk": "mke233-wi" },
  { "_id": 2, "Desk": "MKE233-WI" },
  { "_id": 3, "Desk": "mke233-wi" }
]);
```

**Beispiel für eine Abfrage**

```
db.people.aggregate([
  {
    $project: {
      item: 1,
      compare: { $strcasecmp: ["$Desk", "mke233-wi"] }
    }
  }
]);
```

**Ausgabe**

```
{ "_id" : 1, "compare" : 0 }
{ "_id" : 2, "compare" : 0 }
{ "_id" : 3, "compare" : 0 }
```

Die Ausgabe zeigt, dass der Vergleich zwischen dem `&quot;Desk&quot;` Feld und der Zeichenfolge `0` für alle drei Dokumente `&quot;mke233-wi&quot;` zurückgegeben wird, was bedeutet, dass die Zeichenketten identisch sind, wenn die Groß- und Kleinschreibung ignoriert wird.

## Codebeispiele
<a name="strcasecmp-code"></a>

Um ein Codebeispiel für die Verwendung des `$strcasecmp` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('people');

  const result = await collection.aggregate([
    {
      $project: {
        item: 1,
        compare: { $strcasecmp: ["$Desk", "mke233-wi"] }
      }
    }
  ]).toArray();

  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.people

    result = list(collection.aggregate([
        {
            '$project': {
                'item': 1,
                'compare': { '$strcasecmp': ['$Desk', 'mke233-wi'] }
            }
        }
    ]))

    print(result)

    client.close()

example()
```

------

# \$1substr
<a name="substr"></a>

Der `$substr` Operator in Amazon DocumentDB wird verwendet, um eine Teilzeichenfolge aus einer bestimmten Zeichenfolge zu extrahieren. Dies ist besonders nützlich, wenn Sie Teilzeichenfolgen definieren müssen, die auf einem Zeichenbereich und nicht auf einem Bytebereich basieren. Dies ist besonders wichtig, wenn es sich um Unicode-Zeichenketten handelt, bei denen die Anzahl der zur Darstellung eines Zeichens verwendeten Byte variieren kann.

**Parameter**
+ `string`: Die Eingabezeichenfolge, aus der die Teilzeichenfolge extrahiert werden soll.
+ `start`: Die Startposition (auf Null basierend) der Teilzeichenfolge, die extrahiert werden soll. Kann ein nicht negativer Integer-Ausdruck sein.
+ `length`: Die Anzahl der Zeichen in der extrahierten Teilzeichenfolge. Kann ein nicht negativer Integer-Ausdruck sein.

## Beispiel (MongoDB Shell)
<a name="substr-examples"></a>

In diesem Beispiel demonstrieren wir die Verwendung von, `$substr` um die Abkürzung des Bundesstaates aus dem Schreibtischstandort eines Mitarbeiters zu extrahieren.

**Erstellen Sie Beispieldokumente**

```
db.people.insertMany([
  { "_id": 1, "Desk": "Düsseldorf-NRW-021" },
  { "_id": 2, "Desk": "Bremerhaven-HBB-32a" },
  { "_id": 3, "Desk": "Norderstedt-SHH-892.50" },
  { "_id": 4, "Desk": "Brandenburg-BBB-78" }
]);
```

**Beispiel für eine Abfrage**

```
db.people.aggregate([
  {
    $project: {
      "state": { $substr: ["$Desk", 12, 3] }
    }
  }
])
```

**Ausgabe**

```
{ "_id": 1, "state": "NRW" },
{ "_id": 2, "state": "HBB" },
{ "_id": 3, "state": "SHH" },
{ "_id": 4, "state": "BBB" }
```

## Codebeispiele
<a name="substr-code"></a>

Um ein Codebeispiel für die Verwendung des `$substr` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require("mongodb");

async function example() {
  const client = await MongoClient.connect("mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false");
  const db = client.db("test");
  const collection = db.collection("people");

  const result = await collection.aggregate([
    {
      $project: {
        "state": { $substrCP: ["$Desk", 12, 3] }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient("mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false")
    db = client["test"]
    collection = db["people"]

    result = list(collection.aggregate([
        {
            "$project": {
                "state": { "$substrCP": ["$Desk", 12, 3] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1substrBytes
<a name="substrBytes"></a>

Der `$substrBytes` Operator in Amazon DocumentDB wird verwendet, um eine Teilzeichenfolge aus einer Zeichenfolge zu extrahieren, die auf einem bestimmten Bytebereich basiert. Dieser Operator ist nützlich, wenn Sie eine Teilzeichenfolge aus einer Zeichenfolge extrahieren müssen und die Anzahl der Byte, die für die Darstellung der einzelnen Zeichen in der Zeichenfolge erforderlich sind, wichtig ist.

Unlike`$substrCP`, der auf der Anzahl der Unicode-Codepunkte basiert, `$substrBytes` arbeitet mit der Anzahl der Byte, die zur Darstellung der Zeichen in der Zeichenfolge erforderlich sind. Dies kann besonders nützlich sein, wenn Sie mit Zeichenketten arbeiten, die Nicht-ASCII-Zeichen enthalten, da für die Darstellung dieser Zeichen möglicherweise mehr als ein Byte erforderlich ist.

\$1Hinweis: \$1 `$substr` ist seit Version 3.4 veraltet. `$substr`ist jetzt ein Alias für. `$substrBytes`

**Parameter**
+ `string`: Die Eingabezeichenfolge, aus der die Teilzeichenfolge extrahiert wird.
+ `startByte`: Die auf Null basierende Start-Byte-Position der zu extrahierenden Teilzeichenfolge. Ein negativer Wert kann verwendet werden, um eine Position am Ende der Zeichenfolge anzugeben.
+ `length`: Die Anzahl der Bytes in der Teilzeichenfolge, die extrahiert werden sollen.

## Beispiel (MongoDB Shell)
<a name="substrBytes-examples"></a>

In diesem Beispiel verwenden wir, `$substrBytes` um eine Teilzeichenfolge aus einer Zeichenfolge zu extrahieren, die Nicht-ASCII-Zeichen enthält.

**Erstellen Sie Beispieldokumente**

```
db.people.insertMany([
  { "_id": 1, "Desk": "Düsseldorf-NRW-021" },
  { "_id": 2, "Desk": "Bremerhaven-HBB-32a" },
  { "_id": 3, "Desk": "Norderstedt-SHH-892.50" },
  { "_id": 4, "Desk": "Brandenburg-BBB-78" }
]);
```

**Beispiel für eine Abfrage**

```
db.people.aggregate([
  {
    $project: {
      "state": { $substrBytes: [ "$Desk", 12, 3] }
    }
  }
])
```

**Ausgabe**

```
{ "_id": 1, "state": "NRW" },
{ "_id": 2, "state": "HBB" },
{ "_id": 3, "state": "SHH" },
{ "_id": 4, "state": "BBB" }
```

In diesem Beispiel verwenden wir, `$substrBytes` um eine 3-Byte-Teilzeichenfolge zu extrahieren, beginnend mit dem 12. Byte des Feldes`Desk`. Auf diese Weise können wir die zweistellige Abkürzung für den Bundesstaat extrahieren, auch wenn die Zeichenfolge Nicht-ASCII-Zeichen enthalten kann.

## Codebeispiele
<a name="substrBytes-code"></a>

Um ein Codebeispiel für die Verwendung des `$substrBytes` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const people = db.collection('people');

  const result = await people.aggregate([
    {
      $project: {
        "state": { $substrBytes: ["$Desk", 12, 3] }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    people = db.people

    result = list(people.aggregate([
        {
            '$project': {
                "state": { '$substrBytes': ["$Desk", 12, 3] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1substrCP
<a name="substrCP"></a>

Der `$substrCP` Operator in Amazon DocumentDB wird verwendet, um eine Teilzeichenfolge aus einer Zeichenfolge zu extrahieren, wobei die Teilzeichenfolge als Bereich von UTF-8-Codepunkten (CP) angegeben ist. Dieser Operator ist besonders nützlich, wenn Sie mit Unicode-Zeichenketten arbeiten, da Sie damit Teilzeichenfolgen extrahieren können, ohne sich Gedanken über die zugrunde liegende Byte-Darstellung der Zeichen machen zu müssen.

Im Gegensatz zum `$substrBytes` Operator, der mit Bytepositionen arbeitet, arbeitet der `$substrCP` Operator mit Codepunktpositionen. Dies erleichtert die Arbeit mit Zeichenfolgen, die Nicht-ASCII-Zeichen enthalten, da die Anzahl der Codepunkte möglicherweise nicht der Anzahl der Byte oder Zeichen entspricht.

**Parameter**
+ `string`: Die Eingabezeichenfolge, aus der die Teilzeichenfolge extrahiert werden soll.
+ `start`: Die Startposition des Codepunkts (auf Null basierend), aus der die Teilzeichenfolge extrahiert werden soll.
+ `length`: Die Anzahl der zu extrahierenden Codepunkte.

## Beispiel (MongoDB Shell)
<a name="substrCP-examples"></a>

In diesem Beispiel verwenden wir den `$substrCP` Operator, um die Abkürzung für das Bundesland aus einer Zeichenfolge zu extrahieren, die den Schreibtischstandort des Mitarbeiters enthält.

**Erstellen Sie Beispieldokumente**

```
db.people.insert([
  { "_id": 1, "first_name": "Jane", "last_name": "Doe", "Desk": "12 Main St, Minneapolis, MN 55401" },
  { "_id": 2, "first_name": "John", "last_name": "Doe", "Desk": "456 Oak Rd, New Orleans, LA 70032" },
  { "_id": 3, "first_name": "Steve", "last_name": "Smith", "Desk": "789 Elm Ln, Bakersfield, CA 93263" }
]);
```

**Beispiel für eine Abfrage**

```
db.people.aggregate([
  {
    $project: {
      "state": { $substrCP: ["$Desk", 25, 2] }
    }
  }
]);
```

**Ausgabe**

```
{ "_id" : 1, "state" : "MN" }
{ "_id" : 2, "state" : "LA" }
{ "_id" : 3, "state" : "CA" }
```

In diesem Beispiel wissen wir, dass die Abkürzung für das Bundesland am 25. Codepunkt im `Desk` Feld beginnt und 2 Codepunkte lang ist. Mithilfe des `$substrCP` Operators können wir die Abkürzung des Bundesstaates extrahieren, ohne uns um die zugrunde liegende Byte-Darstellung der Zeichenfolge kümmern zu müssen.

## Codebeispiele
<a name="substrCP-code"></a>

Um ein Codebeispiel für die Verwendung des `$substrCP` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findStates() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const result = await db.collection('people').aggregate([
    {
      $project: {
        "state": { $substrCP: ["$Desk", 25, 2] }
      }
    }
  ]).toArray();
  console.log(result);
  client.close();
}

findStates();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_states():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    result = list(db.people.aggregate([
        {
            '$project': {
                'state': { '$substrCP': ['$Desk', 25, 2] }
            }
        }
    ]))
    print(result)
    client.close()

find_states()
```

Sowohl in den Beispielen Node.js als auch in Python verwenden wir den `$substrCP` Operator, um die Abkürzung des Bundesstaates aus dem `Desk` Feld zu extrahieren, ähnlich dem MongoDB-Shell-Beispiel.

------

# \$1subtract
<a name="subtract"></a>

Der `$subtract` Operator in Amazon DocumentDB wird verwendet, um Werte zu subtrahieren. Er kann verwendet werden, um Daten, Zahlen oder eine Kombination aus beidem zu subtrahieren. Dieser Operator ist nützlich, um die Differenz zwischen zwei Daten zu berechnen oder einen Wert von einer Zahl zu subtrahieren.

**Parameter**
+ `expression1`: Der erste Wert, der subtrahiert werden soll.
+ `expression2`: Der zweite Wert, von dem subtrahiert werden soll. `<expression1>`

## Beispiel (MongoDB Shell)
<a name="subtract-examples"></a>

Das folgende Beispiel zeigt, wie der `$subtract` Operator verwendet wird, um die Differenz zwischen zwei Daten zu berechnen.

**Erstellen Sie ein Beispieldokument**

```
db.dates.insert([
  {
  "_id": 1,
  "startDate": ISODate("2023-01-01T00:00:00Z"),
  "endDate": ISODate("2023-01-05T12:00:00Z")
  }
]);
```

**Beispiel für eine Abfrage**

```
db.dates.aggregate([
  {
    $project: {
      _id: 1,
      durationDays: {
        $divide: [
          { $subtract: ["$endDate", "$startDate"] },
          1000 * 60 * 60 * 24  // milliseconds in a day
        ]
      }
    }
  }
]);
```

**Ausgabe**

```
[ { _id: 1, durationDays: 4.5 } ]
```

In diesem Beispiel wird der `$subtract` Operator verwendet, um die Differenz zwischen `$endDate` und `$startDate` in Tagen zu berechnen.

## Codebeispiele
<a name="subtract-code"></a>

Um ein Codebeispiel für die Verwendung des `$subtract` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');

  try {
    await client.connect();
    const db = client.db('test');
    const collection = db.collection('dates');

    const pipeline = [
      {
        $project: {
          _id: 1,
          durationDays: {
            $divide: [
              { $subtract: ["$endDate", "$startDate"] },
              1000 * 60 * 60 * 24  // Convert milliseconds to days
            ]
          }
        }
      }
    ];

    const results = await collection.aggregate(pipeline).toArray();

    console.dir(results, { depth: null });

  } finally {
    await client.close();
  }
}

example().catch(console.error);
```

------
#### [ Python ]

```
from datetime import datetime, timedelta
from pymongo import MongoClient

def example():
  
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')

    try:
        db = client.test
        collection = db.dates

        pipeline = [
            {
                "$project": {
                    "_id": 1,
                    "durationDays": {
                        "$divide": [
                            { "$subtract": ["$endDate", "$startDate"] },
                            1000 * 60 * 60 * 24  # Convert milliseconds to days
                        ]
                    }
                }
            }
        ]

        results = collection.aggregate(pipeline)

        for doc in results:
            print(doc)

    except Exception as e:
        print(f"An error occurred: {e}")

    finally:
        client.close()

example()
```

------

# \$1sum
<a name="sum"></a>

Der `$sum` Operator in Amazon DocumentDB gibt die Summe des angegebenen Ausdrucks für jedes Dokument in einer Gruppe zurück. Es handelt sich um einen Gruppenakkumulatoroperator, der typischerweise in der \$1group-Phase einer Aggregationspipeline verwendet wird, um Summenberechnungen durchzuführen.

**Parameter**
+ `expression`: Der numerische Ausdruck, der summiert werden soll. Dies kann ein Feldpfad, ein Ausdruck oder eine Konstante sein.

## Beispiel (MongoDB Shell)
<a name="sum-examples"></a>

Das folgende Beispiel zeigt, wie der `$sum` Operator verwendet wird, um den Gesamtumsatz für jedes Produkt zu berechnen.

**Erstellen Sie Beispieldokumente**

```
db.sales.insertMany([
  { product: "abc", price: 10, quantity: 2 },
  { product: "abc", price: 10, quantity: 3 },
  { product: "xyz", price: 20, quantity: 1 },
  { product: "xyz", price: 20, quantity: 5 }
]);
```

**Beispiel für eine Abfrage**

```
db.sales.aggregate([
  { $group: {
      _id: "$product",
      totalSales: { $sum: { $multiply: [ "$price", "$quantity" ] } }
    }}
]);
```

**Ausgabe**

```
[
  { "_id": "abc", "totalSales": 50 },
  { "_id": "xyz", "totalSales": 120 }
]
```

## Codebeispiele
<a name="sum-code"></a>

Um ein Codebeispiel für die Verwendung des `$sum` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const uri = 'mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false';
  const client = new MongoClient(uri);

  try {
    await client.connect();

    const db = client.db('test');
    const collection = db.collection('sales');

    const result = await collection.aggregate([
      { $group: {
          _id: "$product",
          totalSales: { $sum: { $multiply: [ "$price", "$quantity" ] } }
        }}
    ]).toArray();

    console.log(result);

  } catch (error) {
    console.error('Error:', error);
  } finally {
    await client.close();
  }
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient
from pprint import pprint

def example():
    client = None
    try:
        client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')

        db = client.test
        collection = db.sales

        result = list(collection.aggregate([
            { '$group': {
                '_id': '$product',
                'totalSales': { '$sum': { '$multiply': [ '$price', '$quantity' ] } }
            }}
        ]))

        pprint(result)

    except Exception as e:
        print(f"An error occurred: {e}")

    finally:
        if client:
            client.close()

example()
```

------

# \$1switch
<a name="switch"></a>

Neu ab Version 4.0.

Wird von Elastic Cluster nicht unterstützt.

Der `$switch` Operator ist ein Operator für bedingte Ausdrücke in Amazon DocumentDB, der es Ihnen ermöglicht, eine Liste von Groß- und Kleinschreibung auszuwerten und den Wert des ersten Falls zurückzugeben, der als wahr ausgewertet wird, oder einen Standardwert, wenn kein Groß-/Kleinschreibung wahr ist.

**Parameter**
+ `branches`: Ein Array von Dokumenten, von denen jedes ein Fallfeld hat, das den auszuwertenden booleschen Ausdruck enthält, und ein Thann-Feld, das den Wert enthält, der zurückgegeben werden soll, wenn der Groß-/Kleinschreibung wahr ist.
+ `default`: (optional) Der Wert, der zurückgegeben werden soll, wenn keiner der Groß- und Kleinschreibung zutrifft.

## Beispiel (MongoDB Shell)
<a name="switch-examples"></a>

Das folgende Beispiel zeigt, wie der `$switch` Operator verwendet wird, um die Versandkosten für eine Bestellung anhand der Gesamtsumme der Bestellung zu ermitteln.

**Erstellen Sie Beispieldokumente**

```
db.orders.insertMany([
  { _id: 1, total: 50 },
  { _id: 2, total: 150 },
  { _id: 3, total: 250 }
]);
```

**Beispiel für eine Abfrage**

```
db.orders.aggregate([
  {
    $project: {
      _id: 1,
      total: 1,
      shippingCost: {
        $switch: {
          branches: [
            { case: { $lte: ["$total", 100] }, then: 5 },
            { case: { $lte: ["$total", 200] }, then: 10 },
            { case: { $gt: ["$total", 200] }, then: 15 }
          ],
          default: 0
        }
      }
    }
  }
])
```

**Ausgabe**

```
[
  {
    "_id": 1,
    "total": 50,
    "shippingCost": 5
  },
  {
    "_id": 2,
    "total": 150,
    "shippingCost": 10
  },
  {
    "_id": 3,
    "total": 250,
    "shippingCost": 15
  }
]
```

## Codebeispiele
<a name="switch-code"></a>

Um ein Codebeispiel für die Verwendung des `$switch` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('orders');

  const result = await collection.aggregate([
    {
      $project: {
        _id: 1,
        total: 1,
        shippingCost: {
          $switch: {
            branches: [
              { case: { $lte: ['$total', 100] }, then: 5 },
              { case: { $lte: ['$total', 200] }, then: 10 },
              { case: { $gt: ['$total', 200] }, then: 15 }
            ],
            default: 0
          }
        }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def main():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.orders

    result = list(collection.aggregate([
        {
            '$project': {
                '_id': 1,
                'total': 1,
                'shippingCost': {
                    '$switch': {
                        'branches': [
                            { 'case': { '$lte': ['$total', 100] }, 'then': 5 },
                            { 'case': { '$lte': ['$total', 200] }, 'then': 10 },
                            { 'case': { '$gt': ['$total', 200] }, 'then': 15 }
                        ],
                        'default': 0
                    }
                }
            }
        }
    ]))

    print(result)
    client.close()

if __name__ == '__main__':
    main()
```

------

# \$1 zu Bool
<a name="toBool"></a>

Der `$toBool` Operator in Amazon DocumentDB konvertiert einen Ausdruck in einen booleschen Wert.

**Parameter**
+ `expression`: Der Ausdruck, der in einen booleschen Wert umgewandelt werden soll.

**Hinweis**: Jede Zeichenfolge wird konvertiert in. `true`

## Beispiel (MongoDB Shell)
<a name="toBool-examples"></a>

Das folgende Beispiel zeigt, wie der `$toBool` Operator verwendet wird, um Gerätestatuswerte aus verschiedenen Datentypen zu normalisieren.

**Erstellen Sie Beispieldokumente**

```
db.deviceStates.insertMany([
  { _id: 1, deviceId: "sensor-001", status: true },
  { _id: 2, deviceId: "camera-002", status: 1 },
  { _id: 3, deviceId: "thermostat-003", status: "active" },
  { _id: 4, deviceId: "doorlock-004", status: 0 }
]);
```

**Beispiel für eine Abfrage**

```
db.deviceStates.aggregate([
  {
    $project: {
      _id: 1,
      deviceId: 1,
      isActive: { $toBool: "$status" }
    }
  }
]);
```

**Ausgabe**

```
[
  { "_id": 1, "deviceId": "sensor-001", "isActive": true },
  { "_id": 2, "deviceId": "camera-002", "isActive": true },
  { "_id": 3, "deviceId": "thermostat-003", "isActive": true },
  { "_id": 4, "deviceId": "doorlock-004", "isActive": false }
]
```

## Codebeispiele
<a name="toBool-code"></a>

Um ein Codebeispiel für die Verwendung des `$toBool` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('deviceStates');

  const result = await collection.aggregate([
    {
      $project: {
        _id: 1,
        deviceId: 1,
        isActive: { $toBool: '$status' }
      }
    }
  ]).toArray();

  console.log(result);

  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def main():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['deviceStates']

    result = list(collection.aggregate([
        {
            '$project': {
                '_id': 1,
                'deviceId': 1,
                'isActive': { '$toBool': '$status' }
            }
        }
    ]))

    print(result)

    client.close()

if __name__ == '__main__':
    main()
```

------

# \$1 bis Datum
<a name="toDate"></a>

Neu ab Version 4.0

Der `$toDate` Aggregationsoperator in Amazon DocumentDB wird verwendet, um eine Datums- oder Datums- und Uhrzeitzeichenfolge in einen BSON-Datumstyp zu konvertieren. Dies ist die umgekehrte Operation des Operators. `$dateToString`

**Parameter**
+ `dateString`: Eine Zeichenkettendarstellung eines Datums oder eines Datums und einer Uhrzeit, das in einen BSON-Datumstyp konvertiert werden soll.
+ `format`: (optional) Eine Zeichenfolge, die das Format von angibt. `dateString` Falls nicht angegeben, versucht der Operator, das `dateString` in verschiedenen standardmäßigen Datums- und Uhrzeitformaten zu analysieren.
+ `timezone`: (optional) Eine Zeichenfolge, die die Zeitzone darstellt, die für die Konvertierung verwendet werden soll. Falls nicht angegeben, wird die lokale Zeitzone verwendet.

## Beispiel (MongoDB Shell)
<a name="toDate-examples"></a>

Das folgende Beispiel zeigt, wie der `$toDate` Operator verwendet wird, um eine Datumszeichenfolge in einen BSON-Datumstyp zu konvertieren.

**Erstellen Sie Beispieldokumente**

```
db.events.insertMany([
  { _id: 1, eventName: "Mission Start", eventTime: "2023-04-15T10:30:00Z" },
  { _id: 2, eventName: "Checkpoint Reached", eventTime: "2023-04-15T11:15:00Z" },
  { _id: 3, eventName: "Mission End", eventTime: "2023-04-15T12:00:00Z" }
]);
```

**Beispiel für eine Abfrage**

```
db.events.aggregate([
  {
    $project: {
      eventName: 1,
      eventTimeDate: { $toDate: "$eventTime" }
    }
  }
]);
```

**Ausgabe**

```
[
  {
    "_id": 1,
    "eventName": "Mission Start",
    "eventTimeDate": ISODate("2023-04-15T10:30:00Z")
  },
  {
    "_id": 2,
    "eventName": "Checkpoint Reached",
    "eventTimeDate": ISODate("2023-04-15T11:15:00Z")
  },
  {
    "_id": 3,
    "eventName": "Mission End",
    "eventTimeDate": ISODate("2023-04-15T12:00:00Z")
  }
]
```

## Codebeispiele
<a name="toDate-code"></a>

Um ein Codebeispiel für die Verwendung des `$toDate` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('events');

  const result = await collection.aggregate([
    {
      $project: {
        eventName: 1,
        eventTimeDate: { $toDate: '$eventTime' }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['events']

    result = list(collection.aggregate([
        {
            '$project': {
                'eventName': 1,
                'eventTimeDate': { '$toDate': '$eventTime' }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1 zu Dezimal
<a name="toDecimal"></a>

Neu ab Version 4.0

Der `$toDecimal` Operator in Amazon DocumentDB wird verwendet, um einen Wert in den Decimal128-Datentyp zu konvertieren. Dies ist nützlich, wenn Sie präzise Dezimalarithmetik durchführen oder große Dezimalwerte verarbeiten müssen, die mit dem Double-Datentyp nicht genau dargestellt werden können.

**Parameter**
+ `expression`: Der Ausdruck, der in den Decimal128-Datentyp konvertiert werden soll.

## Beispiel (MongoDB Shell)
<a name="toDecimal-examples"></a>

Dieses Beispiel zeigt, wie der `$toDecimal` Operator verwendet wird, um einen Zeichenkettenwert in einen Decimal128-Datentyp zu konvertieren.

**Erstellen Sie Beispieldokumente**

```
db.numbers.insertOne({ _id: 1, value: "3.14" });
db.numbers.insertOne({ _id: 2, value: "2.71" });
```

**Beispiel für eine Abfrage**

```
db.numbers.aggregate([
  { $project: {
    _id: 1,
    decimalValue: { $toDecimal: "$value" }
  }}
])
```

**Ausgabe**

```
[
  { "_id" : 1, "decimalValue" : Decimal128("3.14") },
  { "_id" : 2, "decimalValue" : Decimal128("2.71") }
]
```

## Codebeispiele
<a name="toDecimal-code"></a>

Um ein Codebeispiel für die Verwendung des `$toDecimal` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('numbers');

  const result = await collection.aggregate([
    { $project: {
      _id: 1,
      decimalValue: { $toDecimal: "$value" }
    }}
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.numbers

    result = list(collection.aggregate([
        {'$project': {
            '_id': 1,
            'decimalValue': {'$toDecimal': '$value'}
        }}
    ]))

    print(result)
    client.close()

example()
```

------

# \$1 bis verdoppeln
<a name="toDouble"></a>

Neu ab Version 4.0

Der `$toDouble` Operator in Amazon DocumentDB wird verwendet, um einen Wert in eine 64-Bit-Gleitkommazahl mit doppelter Genauigkeit umzuwandeln. Dies kann nützlich sein, wenn Sie arithmetische Operationen mit Werten durchführen müssen, die ursprünglich nicht in einem numerischen Format vorliegen.

**Parameter**

`&lt;expression&gt;`: Der Ausdruck, der in einen doppelten Wert umgewandelt werden soll. Dies kann ein beliebiger gültiger Ausdruck sein, der in einen numerischen Wert, eine Zeichenfolge oder einen booleschen Wert aufgelöst wird.

## Beispiel (MongoDB Shell)
<a name="toDouble-examples"></a>

Dieses Beispiel zeigt, wie der `$toDouble` Operator verwendet wird, um einen Zeichenkettenwert in einen numerischen Wert umzuwandeln, um eine mathematische Berechnung durchzuführen.

**Erstellen Sie Beispieldokumente**

```
db.numbers.insertMany([
  { _id: 1, value: "10.5" },
  { _id: 2, value: "20.25" },
  { _id: 3, value: "7" }
])
```

**Beispiel für eine Abfrage**

```
db.numbers.aggregate([
  {
    $project: {
      _id: 1,
      value: 1,
      double_value: { $toDouble: "$value" },
      double_plus_five: { $add: [{ $toDouble: "$value" }, 5] }
    }
  }
])
```

**Ausgabe**

```
[
  { "_id" : 1, "value" : "10.5", "double_value" : 10.5, "double_plus_five" : 15.5 },
  { "_id" : 2, "value" : "20.25", "double_value" : 20.25, "double_plus_five" : 25.25 },
  { "_id" : 3, "value" : "7", "double_value" : 7.0, "double_plus_five" : 12.0 }
]
```

## Codebeispiele
<a name="toDouble-code"></a>

Um ein Codebeispiel für die Verwendung des `$toDouble` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('numbers');

  const result = await collection.aggregate([
    {
      $project: {
        _id: 1,
        value: 1,
        double_value: { $toDouble: "$value" },
        double_plus_five: { $add: [{ $toDouble: "$value" }, 5] }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['numbers']

    result = list(collection.aggregate([
        {
            '$project': {
                '_id': 1,
                'value': 1,
                'double_value': { '$toDouble': '$value' },
                'double_plus_five': { '$add': [{ '$toDouble': '$value' }, 5] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1 zu Int
<a name="toInt"></a>

Neu ab Version 4.0

Der `$toInt` Operator in Amazon DocumentDB wird verwendet, um einen Eingabewert in einen Integer-Datentyp zu konvertieren. Dieser Operator ist nützlich, wenn Sie sicherstellen müssen, dass ein Feld oder ein Ausdruck als Ganzzahl dargestellt wird, was für bestimmte Operationen oder Datenverarbeitungsaufgaben wichtig sein kann.

**Parameter**
+ `expression`: Der Ausdruck, der in eine Ganzzahl umgewandelt werden soll.

## Beispiel (MongoDB Shell)
<a name="toInt-examples"></a>

Das folgende Beispiel zeigt, wie der `$toInt` Operator verwendet wird, um einen Zeichenkettenwert in eine Ganzzahl umzuwandeln.

**Erstellen Sie Beispieldokumente**

```
db.numbers.insertMany([
  { "name": "one", "value": "1" },
  { "name": "hundred", "value": "100" }
]);
```

**Beispiel für eine Abfrage**

```
db.numbers.aggregate([
  { $project: {
    "_id": 0,
    "name": 1,
    "intValue": { $toInt: "$value" }
  }}
]);
```

**Ausgabe**

```
{ "name": "one", "intValue": 1 }
{ "name": "hundred", "intValue": 100 }
```

## Codebeispiele
<a name="toInt-code"></a>

Um ein Codebeispiel für die Verwendung des `$toInt` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('numbers');

  const result = await collection.aggregate([
    { $project: {
      "_id": 0,
      "name": 1,
      "intValue": { $toInt: "$value" }
    }}
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['numbers']

    result = list(collection.aggregate([
        { "$project": {
            "_id": 0,
            "name": 1,
            "intValue": { "$toInt": "$value" }
        }}
    ]))

    print(result)
    client.close()

example()
```

------

# \$1 zu Long
<a name="toLong"></a>

Neu ab Version 4.0

Der `$toLong` Operator in Amazon DocumentDB wird verwendet, um einen Wert in einen 64-Bit-Datentyp vom Typ Integer (Long) zu konvertieren. Dies kann nützlich sein, wenn Sie arithmetische Operationen oder Vergleiche mit numerischen Werten durchführen müssen, die als Zeichenketten oder andere Datentypen gespeichert werden können.

**Parameter**
+ `expression`: Der Ausdruck, der in eine 64-Bit-Ganzzahl konvertiert werden soll.

## Beispiel (MongoDB Shell)
<a name="toLong-examples"></a>

Dieses Beispiel zeigt, wie der `$toLong` Operator verwendet wird, um einen Zeichenkettenwert in eine 64-Bit-Ganzzahl zu konvertieren.

**Erstellen Sie Beispieldokumente**

```
db.numbers.insertMany([
  { _id: 1, value: "42" },
  { _id: 3, value: "9223372036854775807" }
]);
```

**Beispiel für eine Abfrage**

```
db.numbers.aggregate([
  {
    $project: {
      _id: 1,
      longValue: { $toLong: "$value" }
    }
  }
])
```

**Ausgabe**

```
[
  { "_id" : 1, "longValue" : 42 },
  { "_id" : 3, "longValue" : 9223372036854775807 }
]
```

## Codebeispiele
<a name="toLong-code"></a>

Um ein Codebeispiel für die Verwendung des `$toLong` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const numbers = db.collection('numbers');

  const result = await numbers.aggregate([
    {
      $project: {
        _id: 1,
        longValue: { $toLong: "$value" }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    numbers = db.numbers

    result = list(numbers.aggregate([
        {
            '$project': {
                '_id': 1,
                'longValue': { '$toLong': '$value' }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1toLower
<a name="toLower"></a>

Der `$toLower` Operator in Amazon DocumentDB wird verwendet, um eine Zeichenfolge in Kleinbuchstaben umzuwandeln.

**Parameter**
+ `expression`: Der Zeichenkettenausdruck, der in Kleinbuchstaben umgewandelt werden soll.

## Beispiel (MongoDB Shell)
<a name="toLower-examples"></a>

Das folgende Beispiel zeigt, wie der `$toLower` Operator verwendet wird, um das `Desk` Feld in Kleinbuchstaben umzuwandeln.

**Erstellen Sie Beispieldokumente**

```
db.locations.insertMany([
  { "_id": 1, "Desk": "Düsseldorf-BVV-021" },
  { "_id": 2, "Desk": "Munich-HGG-32a" }
]);
```

**Beispiel für eine Abfrage**

```
db.locations.aggregate([
  { $project: { item: { $toLower: "$Desk" } } }
]);
```

**Ausgabe**

```
{ "_id" : 1, "item" : "düsseldorf-bvv-021" }
{ "_id" : 2, "item" : "munich-hgg-32a" }
```

## Codebeispiele
<a name="toLower-code"></a>

Um ein Codebeispiel für die Verwendung des `$toLower` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require("mongodb");

async function main() {
  const client = await MongoClient.connect("mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false");
  const db = client.db("test");
  const collection = db.collection("locations");

  const result = await collection.aggregate([
    { $project: { item: { $toLower: "$Desk" } } }
  ]).toArray();

  console.log(result);

  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def main():
    client = MongoClient("mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false")
    db = client["test"]
    collection = db["locations"]

    result = list(collection.aggregate([
        { "$project": { "item": { "$toLower": "$Desk" } } }
    ]))

    print(result)

    client.close()

if __name__ == "__main__":
    main()
```

------

# \$1toObjectId
<a name="toObjectId"></a>

Neu ab Version 4.0

Der `$toObjectId` Operator in Amazon DocumentDB wird verwendet, um eine Zeichenkettendarstellung eines in einen tatsächlichen ObjectId Datentyp ObjectId zu konvertieren. Dies kann nützlich sein, wenn Sie mit Daten arbeiten, die als Zeichenkettendarstellungen von gespeichert wurden ObjectIds, da Sie damit Operationen ausführen können, für die der ObjectId Datentyp erforderlich ist.

**Parameter**
+ `expression`: Ein Zeichenkettenausdruck, der einen gültigen Wert darstellt ObjectId.

## Beispiel (MongoDB Shell)
<a name="toObjectId-examples"></a>

Das folgende Beispiel zeigt, wie der `$toObjectId` Operator verwendet wird, um eine Zeichenkettendarstellung von an in den ObjectId Datentyp ObjectId zu konvertieren.

**Erstellen Sie Beispieldokumente**

```
db.employees.insertMany([
  { _id: 1, empId:"64e5f8886218c620cf0e8f8a", name: "Carol Smith", employeeId: "c720a" },
  { _id: 2, empId:"64e5f94e6218c620cf0e8f8c", name: "Bill Taylor", employeeId: "c721a" }
]);
```

**Beispiel für eine Abfrage**

```
db.employees.aggregate([
  { $project: {
    "empIdAsObjectId": {$toObjectId: "$empId"}}
  }
]);
```

**Ausgabe**

```
[
  { _id: 1, empIdAsObjectId: ObjectId('64e5f8886218c620cf0e8f8a') },
  { _id: 2, empIdAsObjectId: ObjectId('64e5f94e6218c620cf0e8f8c') }
]
```

## Codebeispiele
<a name="toObjectId-code"></a>

Um ein Codebeispiel für die Verwendung des `$toObjectId` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('employees');

  const result = await collection.aggregate([
    { $project: {
      "empIdAsObjectId": {$toObjectId: "$empId"}}
    }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['employees']

    result = list(collection.aggregate([
      { "$project": {
        "empIdAsObjectId": {"$toObjectId": "$empId"}}
      }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1 toString
<a name="toString"></a>

Neu ab Version 4.0

Der `$toString` Operator in Amazon DocumentDB wird verwendet, um einen Wert eines beliebigen Typs (außer Null) in eine Zeichenkettendarstellung zu konvertieren. Dies kann nützlich sein, wenn Sie Zeichenkettenoperationen mit Werten durchführen müssen, die ursprünglich nicht im Zeichenkettenformat vorliegen.

**Parameter**
+ `expression`: Der Ausdruck, der in eine Zeichenfolge konvertiert werden soll.

## Beispiel (MongoDB Shell)
<a name="toString-examples"></a>

Das folgende Beispiel zeigt, wie der `$toString` Operator verwendet wird, um numerische Werte in Zeichenketten umzuwandeln.

**Erstellen Sie Beispieldokumente**

```
db.numbers.insertMany([
  { "_id": 1, "value": 42 },
  { "_id": 2, "value": 3.14 }
]);
```

**Beispiel für eine Abfrage**

```
db.numbers.aggregate([
  { $project: {
    _id: 1,
    valueAsString: { $toString: "$value" }
  }}
]);
```

**Ausgabe**

```
{ "_id": 1, "valueAsString": "42" }
{ "_id": 2, "valueAsString": "3.14" }
```

## Codebeispiele
<a name="toString-code"></a>

Um ein Codebeispiel für die Verwendung des `$toString` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('numbers');

  const result = await collection.aggregate([
    { $project: {
      _id: 1,
      valueAsString: { $toString: '$value' }
    }}
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['numbers']

    result = list(collection.aggregate([
        { '$project': {
            '_id': 1,
            'valueAsString': { '$toString': '$value' }
        }}
    ]))

    print(result)
    client.close()

example()
```

------

# \$1toUpper
<a name="toUpper"></a>

Der `$toUpper` Operator in Amazon DocumentDB wird verwendet, um eine Zeichenfolge in Großbuchstaben umzuwandeln.

**Parameter**
+ `expression`: Der Zeichenkettenausdruck, der in Großbuchstaben umgewandelt werden soll.

## Beispiel (MongoDB Shell)
<a name="toUpper-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$toUpper` Operators, um das `Desk` Feld in Großbuchstaben umzuwandeln.

**Erstellen Sie Beispieldokumente**

```
db.locations.insertMany([
  { "_id": 1, "Desk": "düsseldorf-bvv-021" },
  { "_id": 2, "Desk": "munich-hgg-32a" }
]);
```

**Beispiel für eine Abfrage**

```
db.locations.aggregate([
  { $project: { item: { $toUpper: "$Desk" } } }
]);
```

**Ausgabe**

```
{ "_id" : 1, "item" : "DüSSELDORF-BVV-021" }
{ "_id" : 2, "item" : "MUNICH-HGG-32A" }
```

## Codebeispiele
<a name="toUpper-code"></a>

Um ein Codebeispiel für die Verwendung des `$toUpper` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('locations');

  const result = await collection.aggregate([
    { $project: { item: { $toUpper: '$Desk' } } }
  ]).toArray();

  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['locations']

    result = list(collection.aggregate([
        { '$project': { 'item': { '$toUpper': '$Desk' } } }
    ]))

    print(result)

    client.close()

example()
```

------

# \$1trim
<a name="trim"></a>

Neu ab Version 4.0

Der `$trim` Operator in Amazon DocumentDB wird verwendet, um führende and/or abschließende Leerzeichen aus einer Zeichenfolge zu entfernen.

**Parameter**
+ `input`: Der Zeichenkettenausdruck, der gekürzt werden soll.
+ `chars`: (optional) Gibt die Zeichen an, die am Anfang und Ende der Eingabe gekürzt werden sollen. Die Standardeinstellung ist Leerzeichen.

## Beispiel (MongoDB Shell)
<a name="trim-examples"></a>

Das folgende Beispiel zeigt, wie der `$trim` Operator verwendet wird, um führende und nachfolgende Leerzeichen aus einer Zeichenfolge zu entfernen.

**Erstellen Sie Beispieldokumente**

```
db.people.insertMany([
  { "name": "   John Doe   " },
  { "name": "   Bob Johnson   " }
])
```

**Beispiel für eine Abfrage**

```
db.people.aggregate([
  { $project: {
    "name": { $trim: {input: "$name"}}
  }}
])
```

**Ausgabe**

```
[
  { "name": "John Doe" },
  { "name": "Bob Johnson" }
]
```

## Codebeispiele
<a name="trim-code"></a>

Um ein Codebeispiel für die Verwendung des `$trim` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('people');

  const result = await collection.aggregate([
    { $project: {
      "name": { $trim: {input: "$name" }}
    }}
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['people']

    result = list(collection.aggregate([
        {"$project": {
            "name": {"$trim": {"input": "$name"}}
        }}
    ]))

    print(result)
    client.close()

example()
```

------

# \$1type
<a name="type-aggregation"></a>

Der `$type` Aggregationsoperator gibt den BSON-Datentyp eines angegebenen Felds zurück. Dies ist nützlich, um den Datentyp von Feldwerten bei Aggregationsvorgängen zu identifizieren.

**Parameter**
+ `expression`: Das Feld oder der Ausdruck, dessen Typ zurückgegeben werden soll.

## Beispiel (MongoDB Shell)
<a name="type-aggregation-examples"></a>

Das folgende Beispiel zeigt, wie der `$type` Operator verwendet wird, um den Datentyp des Preisfeldes für jedes Produkt zu identifizieren.

**Erstellen Sie Beispieldokumente**

```
db.inventory.insertMany([
  { _id: 1, item: "Notebook", price: 15.99 },
  { _id: 2, item: "Pen", price: "2.50" },
  { _id: 3, item: "Eraser", price: 1 },
  { _id: 4, item: "Ruler", price: null }
]);
```

**Beispiel für eine Abfrage**

```
db.inventory.aggregate([
  {
    $project: {
      item: 1,
      price: 1,
      priceType: { $type: "$price" }
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 1, item: 'Notebook', price: 15.99, priceType: 'double' },
  { _id: 2, item: 'Pen', price: '2.50', priceType: 'string' },
  { _id: 3, item: 'Eraser', price: 1, priceType: 'int' },
  { _id: 4, item: 'Ruler', price: null, priceType: 'null' }
]
```

## Codebeispiele
<a name="type-aggregation-code"></a>

Um ein Codebeispiel für die Verwendung des `$type` Aggregationsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('inventory');

  const result = await collection.aggregate([
    {
      $project: {
        item: 1,
        price: 1,
        priceType: { $type: "$price" }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['inventory']

    result = list(collection.aggregate([
        {
            '$project': {
                'item': 1,
                'price': 1,
                'priceType': { '$type': '$price' }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1unset
<a name="unset-stage"></a>

Neu ab Version 8.0

Wird von Elastic Cluster nicht unterstützt.

Die `$unset` Aggregationsphase in Amazon DocumentDB ermöglicht es Ihnen, Felder aus Dokumenten zu entfernen.

**Parameter**
+ `expression`: Feldname oder Liste mit mehreren Feldnamen.

## Beispiel (MongoDB Shell)
<a name="unset-stage-examples"></a>

Das folgende Beispiel zeigt, wie das Feld mithilfe der `$unset` Aggregationsphase entfernt wird`price`.

**Erstellen Sie Beispieldokumente**

```
db.inventory.insertMany([
  { item: "pencil", quantity: 100, price: 0.24},
  { item: "pen", quantity: 204, price: 1.78 }
]);
```

**Beispiel für eine Aggregation**

```
db.inventory.aggregate([
  {
    $unset: "price"
  }
])
```

**Ausgabe**

```
[
  {
    _id: ObjectId('69248951d66dcae121d2950d'),
    item: 'pencil',
    quantity: 100
  },
  {
    _id: ObjectId('69248951d66dcae121d2950e'),
    item: 'pen',
    quantity: 204
  }
]
```

## Codebeispiele
<a name="unset-stage-code"></a>

Um ein Codebeispiel für die Verwendung des `$unset` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const inventory = db.collection('inventory');

  const result = await inventory.aggregate([
      {
        $unset: "price"
      }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    inventory = db['inventory']

    result = list(inventory.aggregate([
      {
        "$unset": "price"
      }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1unwind
<a name="unwind"></a>

Der `$unwind` Operator wird verwendet, um ein Array-Feld aus den Eingabedokumenten zu dekonstruieren, um für jedes Element ein Dokument auszugeben. Dies kann nützlich sein, wenn Sie Operationen an den einzelnen Elementen eines Arrays ausführen möchten, z. B. das Filtern, Sortieren oder Transformieren der Daten.

**Parameter**
+ `path`: Der Pfad zu dem Array-Feld, das rückgängig gemacht werden soll.
+ `includeArrayIndex`: (optional) Gibt den Namen des neuen Felds an, das den Index des Array-Elements enthalten soll.
+ `preserveNullAndEmptyArrays`: (optional) Bestimmt, ob bei der Operation das Originaldokument beibehalten wird, wenn das Array-Feld Null oder ein leeres Array ist.

## Beispiel (MongoDB Shell)
<a name="unwind-examples"></a>

Das folgende Beispiel zeigt, wie der `$unwind` Operator verwendet wird, um ein Array-Feld zu dekonstruieren und weitere Operationen an den einzelnen Elementen durchzuführen.

**Erstellen Sie Beispieldokumente**

```
db.people.insertMany([
  { _id: 1, name: "jon", hobbies: ["painting", "dancing", "singing"] },
  { _id: 2, name: "jane", hobbies: ["reading", "swimming"] },
  { _id: 3, name: "jack", hobbies: [] }
])
```

**Beispiel für eine Abfrage**

```
db.people.aggregate([
  { $unwind: "$hobbies" }
])
```

**Ausgabe**

```
[
  { _id: 1, name: 'jon', hobbies: 'painting' },
  { _id: 1, name: 'jon', hobbies: 'dancing' },
  { _id: 1, name: 'jon', hobbies: 'singing' },
  { _id: 2, name: 'jane', hobbies: 'reading' },
  { _id: 2, name: 'jane', hobbies: 'swimming' }
]
```

## Codebeispiele
<a name="unwind-code"></a>

Um ein Codebeispiel für die Verwendung des `$unwind` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('people');

  const result = await collection.aggregate([
    { $unwind: '$hobbies' }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['people']

    result = list(collection.aggregate([
        { '$unwind': '$hobbies' }
    ]))

    print(result)
    client.close()

example()
```

------

# \$1VectorSearch
<a name="vectorSearch"></a>

Neu ab Version 8.0

Wird von Elastic Cluster nicht unterstützt.

Der `$vectorSearch` Operator in Amazon DocumentDB ermöglicht Ihnen die Vektorsuche, eine Methode, die beim maschinellen Lernen verwendet wird, um ähnliche Datenpunkte zu finden, indem ihre Vektordarstellungen anhand von Entfernungs- oder Ähnlichkeitsmetriken verglichen werden. Diese Funktion kombiniert die Flexibilität und die umfassenden Abfragen einer JSON-basierten Dokumentendatenbank mit der Leistungsfähigkeit der Vektorsuche und ermöglicht es Ihnen, Anwendungsfälle für maschinelles Lernen und generative KI wie semantische Suche, Produktempfehlungen und mehr zu entwickeln.

**Parameter**
+ `<exact>`(optional): Markierung, die angibt, ob die Suche nach dem exakten nächsten Nachbarn (ENN) oder dem ungefähren nächsten Nachbarn (ANN) ausgeführt werden soll. Der Wert kann einer der folgenden sein:
+ false — um eine ANN-Suche auszuführen
+ true — um die ENN-Suche auszuführen

Wenn es weggelassen oder auf False gesetzt `numCandidates` ist, ist es erforderlich.

```
- `<index>` : Name of the Vector Search index to use.
- `<limit>` : Number of documents to return in the results.
- `<numCandidates>` (optional): This field is required if 'exact' is false or omitted. Number of nearest neighbors to use during the search. Value must be less than or equal to (<=) 10000. You can't specify a number less than the number of documents to return ('limit').
- `<path>` : Indexed vector type field to search.
- `<queryVector>` : Array of numbers that represent the query vector.
```

## Beispiel (MongoDB Shell)
<a name="vectorSearch-examples"></a>

Das folgende Beispiel zeigt, wie der `$vectorSearch` Operator verwendet werden kann, um ähnliche Produktbeschreibungen auf der Grundlage ihrer Vektordarstellungen zu finden.

**Erstellen Sie Beispieldokumente**

```
db.products.insertMany([
  {
    _id: 1,
    name: "Product A",
    description: "A high-quality, eco-friendly product for your home.",
    description_vector: [ 0.2, 0.5, 0.8 ]
  },
  {
    _id: 2,
    name: "Product B",
    description: "An innovative and modern kitchen appliance.",
    description_vector: [0.7, 0.3, 0.9]
  },
  {
    _id: 3,
    name: "Product C",
    description: "A comfortable and stylish piece of furniture.",
    description_vector: [0.1, 0.2, 0.4]
  }
]);
```

**Vektor-Suchindex erstellen**

```
db.runCommand(
    {
        createIndexes: "products",
        indexes: [{
            key: {
                "description_vector": "vector"
            },
            vectorOptions: {
                type: "hnsw",
                dimensions: 3,
                similarity: "cosine",
                m: 16,
                efConstruction: 64
            },
            name: "description_index"
        }]
    }
);
```

**Beispiel für eine Abfrage**

```
db.products.aggregate([
  { $vectorSearch: {
      index: "description_index",
      limit: 2,
      numCandidates: 10,
      path: "description_vector",
      queryVector: [0.1, 0.2, 0.3]
    }
  }
]);
```

**Ausgabe**

```
[
  {
    "_id": 1,
    "name": "Product A",
    "description": "A high-quality, eco-friendly product for your home.",
    "description_vector": [ 0.2, 0.5, 0.8 ]
  },
  {
    "_id": 3,
    "name": "Product C",
    "description": "A comfortable and stylish piece of furniture.",
    "description_vector": [ 0.1, 0.2, 0.4 ]
  }
]
```

## Codebeispiele
<a name="vectorSearch-code"></a>

Um ein Codebeispiel für die Verwendung des `$vectorSearch` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findSimilarProducts(queryVector) {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('products');

  const result = await collection.aggregate([
    { $vectorSearch: {
        index: "description_index",
        limit: 2,
        numCandidates: 10,
        path: "description_vector",
        queryVector: queryVector
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

findSimilarProducts([0.1, 0.2, 0.3]);
```

------
#### [ Python ]

```
from pymongo import MongoClient


def find_similar_products(query_vector):
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.products

    result = list(collection.aggregate([
        {
            '$vectorSearch': {
                'index': "description_index",
                'limit': 2,
                'numCandidates': 10,
                'path': "description_vector",
                'queryVector': query_vector
            }
        }
    ]))

    print(result)
    client.close()

find_similar_products([0.1, 0.2, 0.3])
```

------

# \$1week
<a name="week"></a>

Der `$week` Operator in Amazon DocumentDB gibt die Wochennummer eines Datums (0-53) auf der Grundlage des ISO 8601-Standards zurück. Die Wochennummer wird auf der Grundlage des Jahres und des Wochentags berechnet, wobei Montag der erste Tag der Woche ist.

**Parameter**

Keine

## Beispiel (MongoDB Shell)
<a name="week-examples"></a>

Das folgende Beispiel zeigt, wie der `$week` Operator verwendet wird, um die Wochennummer eines bestimmten Datums abzurufen.

**Erstellen Sie Beispieldokumente**

```
db.events.insertMany([
  { _id: 1, date: new Date("2023-01-01") },
  { _id: 2, date: new Date("2023-01-08") },
  { _id: 3, date: new Date("2023-12-31") }
]);
```

**Beispiel für eine Abfrage**

```
db.events.aggregate([
  { $project: {
    _id: 1,
    week: { $week: "$date" }
  }}
]);
```

**Ausgabe**

```
[
  { "_id": 1, "week": 1 },
  { "_id": 2, "week": 2 },
  { "_id": 3, "week": 53 }
]
```

## Codebeispiele
<a name="week-code"></a>

Um ein Codebeispiel für die Verwendung des `$week` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const events = db.collection('events');

  const result = await events.aggregate([
    { $project: {
      _id: 1,
      week: { $week: "$date" }
    }}
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
  client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
  db = client['test']
  events = db['events']

  result = list(events.aggregate([
      {'$project': {
          '_id': 1,
          'week': {'$week': '$date'}
      }}
  ]))

  print(result)

  client.close()

example()
```

------

# \$1year
<a name="year"></a>

Der `$year` Operator in Amazon DocumentDB extrahiert die Jahreskomponente aus einem Datum oder Zeitstempel.

**Parameter**
+ `expression`: Der Datums- oder Zeitstempelausdruck, aus dem die Jahreskomponente extrahiert werden soll.

## Beispiel (MongoDB Shell)
<a name="year-examples"></a>

Das folgende Beispiel zeigt, wie der `$year` Operator verwendet wird, um die Jahreskomponente aus einem Datumsfeld zu extrahieren.

**Erstellen Sie Beispieldokumente**

```
db.events.insertMany([
  { "_id": 1, "date": ISODate("2023-04-15T00:00:00Z") },
  { "_id": 3, "date": ISODate("2021-12-31T00:00:00Z") }
]);
```

**Beispiel für eine Abfrage**

```
db.events.aggregate([
  { $project: { year: { $year: "$date" } } }
]);
```

**Ausgabe**

```
[
  { "_id": 1, "year": 2023 },
  { "_id": 3, "year": 2021 }
]
```

## Codebeispiele
<a name="year-code"></a>

Um ein Codebeispiel für die Verwendung des `$year` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('events');

  const result = await collection.aggregate([
    { $project: { year: { $year: "$date" } } }
  ]).toArray();

  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['events']

    result = list(collection.aggregate([
        {'$project': {'year': {'$year': '$date'}}}
    ]))

    print(result)

    client.close()

example()
```

------

# \$1zip
<a name="zip"></a>

Der `$zip` Operator in Amazon DocumentDB ermöglicht es Ihnen, mehrere Arrays zu einem einzigen Array von Tupeln (Schlüssel-Wert-Paare) zu kombinieren. Dies ist nützlich, wenn Sie neue Dokumente oder Objekte erstellen müssen, indem Sie Daten aus verschiedenen Quellen oder Arrays innerhalb eines Dokuments kombinieren.

**Parameter**
+ `inputs`: Eine Reihe von Ausdrücken, die in Arrays aufgelöst werden. Diese Arrays werden zu einem einzigen Array von Tupeln kombiniert.
+ `useLongestLength`: (optional) Falls`true`, hat das Ausgabe-Array die Länge des längsten Eingabe-Arrays und füllt kürzere Arrays mit Werten auf. `null` Falls`false`, hat das Ausgabe-Array die Länge des kürzesten Eingabe-Arrays.
+ `defaults`: (optional) Ein Array von Standardwerten, das für die Tupel verwendet werden soll, wenn das entsprechende Eingabearray kürzer als das längste Eingabearray `useLongestLength` ist und es ist`true`.

## Beispiel (MongoDB Shell)
<a name="zip-examples"></a>

Das folgende Beispiel zeigt, wie der `$zip` Operator verwendet wird, um zwei Arrays zu einem einzigen Array von Tupeln zu kombinieren.

**Erstellen Sie Beispieldokumente**

```
db.grades.insert([
  {
    "_id": 1,
    "name": "John",
    "scores": [90, 85, 92],
    "classes": ["Math", "English", "Science"]
  },
  {
    "_id": 2,
    "name": "Jane",
    "scores": [88, 91, 90, 85],
    "classes": ["Math", "English", "Science", "History"]
  }
])
```

**Beispiel für eine Abfrage**

```
db.grades.aggregate([
  {
    $project: {
      "name": 1,
      "scoredClasses": {
        $zip: {
          inputs: ["$scores", "$classes"],
          useLongestLength: true,
          defaults: [null, null]
        }
      }
    }
  }
])
```

**Ausgabe**

```
[
  {
    "_id": 1,
    "name": "John",
    "scoredClasses": [
      [90, "Math"],
      [85, "English"],
      [92, "Science"],
      [null, null]
    ]
  },
  {
    "_id": 2,
    "name": "Jane",
    "scoredClasses": [
      [88, "Math"],
      [91, "English"],
      [90, "Science"],
      [85, "History"]
    ]
  }
]
```

## Codebeispiele
<a name="zip-code"></a>

Um ein Codebeispiel für die Verwendung des `$zip` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('grades');

  const result = await collection.aggregate([
    {
      $project: {
        "name": 1,
        "scoredClasses": {
          $zip: {
            inputs: ["$scores", "$classes"],
            useLongestLength: true,
            defaults: [null, null]
          }
        }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['grades']

    result = list(collection.aggregate([
        {
            '$project': {
                'name': 1,
                'scoredClasses': {
                    '$zip': {
                        'inputs': ['$scores', '$classes'],
                        'useLongestLength': True,
                        'defaults': [None, None]
                    }
                }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------

# Geodaten
<a name="mongo-apis-geospatial-operators"></a>

Dieser Abschnitt enthält detaillierte Informationen zu Geodatenoperatoren, die von Amazon DocumentDB unterstützt werden.

**Topics**
+ [\$1geometry](geometry.md)
+ [\$1geoIntersects](geoIntersects.md)
+ [\$1geoWithin](geoWithin.md)
+ [\$1maxDistance](maxDistance.md)
+ [\$1minDistance](minDistance.md)
+ [\$1near](near.md)
+ [\$1nearSphere](nearSphere.md)

# \$1geometry
<a name="geometry"></a>

Der `$geometry` Operator in Amazon DocumentDB wird verwendet, um ein GeoJSON-Geometrieobjekt als Teil einer Geodatenabfrage anzugeben. Dieser Operator wird in Verbindung mit anderen Operatoren für Geodatenabfragen wie `$geoWithin` und `$geoIntersects` zur Durchführung räumlicher Abfragen Ihrer Daten verwendet.

In Amazon DocumentDB unterstützt der `$geometry` Operator die folgenden GeoJSON-Geometrietypen:
+ Point
+ LineString
+ Polygon
+ MultiPoint
+ MultiLineString
+ MultiPolygon
+ GeometryCollection

**Parameter**
+ `type`: Der Typ des GeoJSON-Geometrieobjekts, z. B.`Point`,`Polygon`, usw.
+ `coordinates`: Ein Array von Koordinaten, das die Geometrie darstellt. Die Struktur des Koordinatenarrays hängt vom Geometrietyp ab.

## Beispiel (MongoDB Shell)
<a name="geometry-examples"></a>

Das folgende Beispiel zeigt, wie der `$geometry` Operator verwendet wird, um eine `$geoIntersects` Abfrage in Amazon DocumentDB durchzuführen.

**Erstellen Sie Beispieldokumente**

```
db.locations.insertMany([
  { 
    "_id": 1,
    "name": "Location 1",
    "location": { 
      "type": "Point",
      "coordinates": [-73.983253, 40.753941]
    }
  },
  { 
    "_id": 2,
    "name": "Location 2", 
    "location": {
      "type": "Polygon",
      "coordinates": [[
        [-73.998427, 40.730309],
        [-73.954348, 40.730309],
        [-73.954348, 40.780816],
        [-73.998427, 40.780816],
        [-73.998427, 40.730309]
      ]]
    }
  }
]);
```

**Beispiel für eine Abfrage**

```
db.locations.find({
  "location": {
    "$geoIntersects": {
      "$geometry": {
        "type": "Polygon",
        "coordinates": [[
          [-73.998, 40.730],
          [-73.954, 40.730],
          [-73.954, 40.781],
          [-73.998, 40.781],
          [-73.998, 40.730]
        ]]
      }
    }
  }
})
```

**Ausgabe**

```
[
  {
    "_id": 2,
    "name": "Location 2",
    "location": {
      "type": "Polygon",
      "coordinates": [
        [
          [-73.998427, 40.730309],
          [-73.954348, 40.730309],
          [-73.954348, 40.780816],
          [-73.998427, 40.780816],
          [-73.998427, 40.730309]
        ]
      ]
    }
  }
]
```

## Codebeispiele
<a name="geometry-code"></a>

Um ein Codebeispiel für die Verwendung des `$geometry` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('locations');

  const query = {
    "location": {
      "$geoIntersects": {
        "$geometry": {
          "type": "Polygon",
          "coordinates": [[
            [-73.998, 40.730],
            [-73.954, 40.730],
            [-73.954, 40.781],
            [-73.998, 40.781],
            [-73.998, 40.730]
          ]]
        }
      }
    }
  };

  const result = await collection.find(query).toArray();
  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['locations']

    query = {
        "location": {
            "$geoIntersects": {
                "$geometry": {
                    "type": "Polygon",
                    "coordinates": [[
                        [-73.998, 40.730],
                        [-73.954, 40.730],
                        [-73.954, 40.781],
                        [-73.998, 40.781],
                        [-73.998, 40.730]
                    ]]
                }
            }
        }
    }

    result = list(collection.find(query))
    print(result)

    client.close()

example()
```

------

# \$1geoIntersects
<a name="geoIntersects"></a>

Der `$geoIntersects` Operator in Amazon DocumentDB wird verwendet, um Dokumente zu finden, deren Geodaten sich mit einem bestimmten GeoJSON-Objekt überschneiden. Dieser Operator ist nützlich für Anwendungen, bei denen Dokumente anhand ihrer räumlichen Beziehung zu einer bestimmten geographischen Form, wie z. B. einem Polygon oder Multipolygon, identifiziert werden müssen.

**Parameter**
+ `$geometry`: Ein GeoJSON-Objekt, das die Form darstellt, bei der nach Überschneidungen gesucht werden soll. Die unterstützten GeoJSON-Objekttypen sind`Point`, `LineString``Polygon`, und`MultiPolygon`.

## Beispiel (MongoDB Shell)
<a name="geoIntersects-examples"></a>

Das folgende Beispiel zeigt, wie der `$geoIntersects` Operator verwendet wird, um den Namen des Bundesstaates für einen bestimmten Satz von Koordinaten in Amazon DocumentDB zu finden.

**Erstellen Sie Beispieldokumente**

```
db.states.insertMany([
  {
    "name": "New York",
    "loc": {
      "type": "Polygon",
      "coordinates": [[
        [-74.25909423828125, 40.47556838210948],
        [-73.70819091796875, 40.47556838210948],
        [-73.70819091796875, 41.31342607582222],
        [-74.25909423828125, 41.31342607582222],
        [-74.25909423828125, 40.47556838210948]
      ]]
    }
  },
  {
    "name": "California",
    "loc": {
      "type": "Polygon",
      "coordinates": [[
        [-124.4091796875, 32.56456771381587],
        [-114.5458984375, 32.56456771381587],
        [-114.5458984375, 42.00964153424558],
        [-124.4091796875, 42.00964153424558],
        [-124.4091796875, 32.56456771381587]
      ]]
    }
  }
]);
```

**Beispiel für eine Abfrage**

```
var location = [-73.965355, 40.782865];

db.states.find({
  "loc": {
    "$geoIntersects": {
      "$geometry": {
        "type": "Point",
        "coordinates": location
      }
    }
  }
}, {
  "name": 1
});
```

**Ausgabe**

```
{ "_id" : ObjectId("536b0a143004b15885c91a2c"), "name" : "New York" }
```

## Codebeispiele
<a name="geoIntersects-code"></a>

Um ein Codebeispiel für die Verwendung des `$geoIntersects` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findStateByGeoIntersects(longitude, latitude) {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('states');

  const query = {
    loc: {
      $geoIntersects: {
        $geometry: {
          type: 'Point',
          coordinates: [longitude, latitude]
        }
      }
    }
  };

  const projection = {
    _id: 0,
    name: 1
  };

  const document = await collection.findOne(query, { projection });

  await client.close();
  
  if (document) {
    return document.name;
  } else {
    throw new Error('The geo location you entered was not found in the United States!');
  }
}
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_state_by_geointersects(longitude, latitude):
    try:
        client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
        db = client.test
        collection_states = db.states

        query_geointersects = {
            "loc": {
                "$geoIntersects": {
                    "$geometry": {
                        "type": "Point",
                        "coordinates": [longitude, latitude]
                    }
                }
            }
        }

        document = collection_states.find_one(query_geointersects,
                                              projection={
                                                  "_id": 0,
                                                  "name": 1
                                              })
        if document is not None:
            state_name = document['name']
            return state_name
        else:
            raise Exception("The geo location you entered was not found in the United States!")
    except Exception as e:
        print('Exception in geoIntersects: {}'.format(e))
        raise
    finally:
        if client is not None:
            client.close()
```

------

# \$1geoWithin
<a name="geoWithin"></a>

Der `$geoWithin` Operator in Amazon DocumentDB wird verwendet, um Dokumente zu finden, deren Standortdaten (dargestellt als GeoJSON-Objekte) vollständig in einer bestimmten Form enthalten sind, z. B. einem Polygon oder Multipolygon. Dies ist nützlich für die Abfrage von Objekten, die sich in einer bestimmten geografischen Region befinden.

**Parameter**
+ `$geometry`: Ein GeoJSON-Objekt, das die Form darstellt, nach der abgefragt werden soll.

## Beispiel (MongoDB Shell)
<a name="geoWithin-examples"></a>

Das folgende Beispiel zeigt, wie der `$geoWithin` Operator verwendet werden kann, um alle Flughäfen im Bundesstaat New York zu finden.

**Erstellen Sie Beispieldokumente**

```
// Insert state document
db.states.insert({
    "name": "New York",
    "loc": {
        "type": "Polygon",
        "coordinates": [[
            [-79.76278, 45.0],
            [-73.94, 45.0],
            [-73.94, 40.5],
            [-79.76278, 40.5],
            [-79.76278, 45.0]
        ]]
    }
});

// Insert airport documents
db.airports.insert([
    {
        "name": "John F. Kennedy International Airport",
        "type": "airport",
        "code": "JFK",
        "loc": {
            "type": "Point",
            "coordinates": [-73.7781, 40.6413]
        }
    },
    {
        "name": "LaGuardia Airport",
        "type": "airport",
        "code": "LGA",
        "loc": {
            "type": "Point",
            "coordinates": [-73.8772, 40.7769]
        }
    },
    {
        "name": "Buffalo Niagara International Airport",
        "type": "airport",
        "code": "BUF",
        "loc": {
            "type": "Point",
            "coordinates": [-78.7322, 42.9403]
        }
    }
]);
```

**Beispiel für eine Abfrage**

```
var state = db.states.findOne({"name": "New York"});

db.airports.find({
    "loc": {
        "$geoWithin": {
            "$geometry": state.loc
        }
    }
}, {
    "name": 1,
    "type": 1,
    "code": 1,
    "_id": 0
});
```

**Ausgabe**

```
[
  {
    "name": "John F. Kennedy International Airport",
    "type": "airport",
    "code": "JFK"
  },
  {
    "name": "LaGuardia Airport",
    "type": "airport",
    "code": "LGA"
  }
]
```

## Codebeispiele
<a name="geoWithin-code"></a>

Um ein Codebeispiel für die Verwendung des `$geoWithin` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findAirportsWithinState(stateName) {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');

  const stateDoc = await db.collection('states').findOne({ name: stateName }, { projection: { _id: 0, loc: 1 } });
  const airportDocs = await db.collection('airports').find({
    loc: {
      $geoWithin: {
        $geometry: stateDoc.loc
      }
    }
  }, { projection: { name: 1, type: 1, code: 1, _id: 0 } }).toArray();

  console.log(airportDocs);

  await client.close();
}

findAirportsWithinState('New York');
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_airports_within_state(state_name):
    try:
        client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
        db = client['test']
        state_doc = db.states.find_one({'name': state_name}, {'_id': 0, 'loc': 1})
        airport_docs = db.airports.find({
            'loc': {
                '$geoWithin': {
                    '$geometry': state_doc['loc']
                }
            }
        }, {'name': 1, 'type': 1, 'code': 1, '_id': 0})
        
        return list(airport_docs)
    except Exception as e:
        print(f'Error: {e}')
    finally:
        client.close()

airports = find_airports_within_state('New York')
print(airports)
```

------

# \$1maxDistance
<a name="maxDistance"></a>

Der `$maxDistance` Operator in Amazon DocumentDB wird verwendet, um die maximale Entfernung (in Metern) von einem GeoJSON-Punkt anzugeben, innerhalb derer sich Dokumente befinden müssen, um in die Abfrageergebnisse aufgenommen zu werden. Dieser Operator wird in Verbindung mit dem `$nearSphere` Operator verwendet, um Geodatenabfragen durchzuführen.

**Parameter**
+ `$maxDistance`: Die maximale Entfernung (in Metern) vom Referenzpunkt, innerhalb derer sich Dokumente befinden müssen, um in die Abfrageergebnisse aufgenommen zu werden.

## Beispiel (MongoDB Shell)
<a name="maxDistance-examples"></a>

Das folgende Beispiel zeigt, wie der `$maxDistance` Operator in Amazon DocumentDB verwendet wird, um alle Hauptstädte der Bundesstaaten im Umkreis von 100 Kilometern von Boston zu finden.

**Erstellen Sie Beispieldokumente**

```
db.capitals.insert([
  { state: "Massachusetts", city: "Boston", location: { type: "Point", coordinates: [-71.0589, 42.3601] } },
  { state: "Rhode Island", city: "Providence", location: { type: "Point", coordinates: [-71.4128, 41.8239] } },
  { state: "New Hampshire", city: "Concord", location: { type: "Point", coordinates: [-71.5383, 43.2067] } },
  { state: "Vermont", city: "Montpelier", location: { type: "Point", coordinates: [-72.5751, 44.2604] } }
]);
```

**Beispiel für eine Abfrage**

```
db.capitals.find(
  {
    location: {
      $nearSphere: {
        $geometry: { type: "Point", coordinates: [-71.0589, 42.3601] },
        $maxDistance: 100000
      }
    }
  },
  { state: 1, city: 1, _id: 0 }
);
```

**Ausgabe**

```
[
  { "state": "Rhode Island", "city": "Providence" },
  { "state": "New Hampshire", "city": "Concord" }
]
```

## Codebeispiele
<a name="maxDistance-code"></a>

Um ein Codebeispiel für die Verwendung des `$maxDistance` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findCapitalsNearBoston() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const capitals = db.collection('capitals');

  const result = await capitals.find({
    location: {
      $nearSphere: {
        $geometry: { type: "Point", coordinates: [-71.0589, 42.3601] },
        $maxDistance: 100000
      }
    }
  }, {
    projection: { state: 1, city: 1, _id: 0 }
  }).toArray();

  console.log(result);
  await client.close();
}

findCapitalsNearBoston();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_capitals_near_boston():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    capitals = db.capitals

    result = list(capitals.find(
        {
            "location": {
                "$nearSphere": {
                    "$geometry": { "type": "Point", "coordinates": [-71.0589, 42.3601] },
                    "$maxDistance": 100000
                }
            }
        },
        {"state": 1, "city": 1, "_id": 0}
    ))

    print(result)
    client.close()

find_capitals_near_boston()
```

------

# \$1minDistance
<a name="minDistance"></a>

`$minDistance`ist ein Suchoperator, der in Verbindung mit `$nearSphere` oder verwendet wird, `$geoNear` um Dokumente zu filtern, die sich mindestens im angegebenen Mindestabstand vom Mittelpunkt befinden. Dieser Operator wird in Amazon DocumentDB unterstützt und funktioniert ähnlich wie sein Gegenstück in MongoDB.

**Parameter**
+ `$minDistance`: Der Mindestabstand (in Metern) vom Mittelpunkt, um Dokumente in die Ergebnisse einzubeziehen.

## Beispiel (MongoDB Shell)
<a name="minDistance-examples"></a>

In diesem Beispiel finden wir alle Restaurants in einem Umkreis von 2 Kilometern um einen bestimmten Standort in Seattle, Washington.

**Erstellen Sie Beispieldokumente**

```
db.usarestaurants.insertMany([
  {
    "state": "Washington",
    "city": "Seattle",
    "name": "Noodle House",
    "rating": 4.8,
    "location": {
      "type": "Point",
      "coordinates": [-122.3517, 47.6159]
    }
  },
  {
    "state": "Washington",
    "city": "Seattle",
    "name": "Pike Place Grill",
    "rating": 4.5,
    "location": {
      "type": "Point",
      "coordinates": [-122.3412, 47.6102]
    }
  },
  {
    "state": "Washington",
    "city": "Bellevue",
    "name": "The Burger Joint",
    "rating": 4.2,
    "location": {
      "type": "Point",
      "coordinates": [-122.2007, 47.6105]
    }
  }
]);
```

**Beispiel für eine Abfrage**

```
db.usarestaurants.find({
  "location": {
    "$nearSphere": {
      "$geometry": {
        "type": "Point",
        "coordinates": [-122.3516, 47.6156]
      },
      "$minDistance": 1,
      "$maxDistance": 2000
    }
  }
}, {
  "name": 1
});
```

**Ausgabe**

```
{ "_id" : ObjectId("611f3da985009a81ad38e74b"), "name" : "Noodle House" }
{ "_id" : ObjectId("611f3da985009a81ad38e74c"), "name" : "Pike Place Grill" }
```

## Codebeispiele
<a name="minDistance-code"></a>

Um ein Codebeispiel für die Verwendung des `$minDistance` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findRestaurantsNearby() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('usarestaurants');

  const result = await collection.find({
    "location": {
      "$nearSphere": {
        "$geometry": {
          "type": "Point",
          "coordinates": [-122.3516, 47.6156]
        },
        "$minDistance": 1,
        "$maxDistance": 2000
      }
    }
  }, {
    "projection": { "name": 1 }
  }).toArray();

  console.log(result);
  client.close();
}

findRestaurantsNearby();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_restaurants_nearby():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.usarestaurants

    result = list(collection.find({
        "location": {
            "$nearSphere": {
                "$geometry": {
                    "type": "Point",
                    "coordinates": [-122.3516, 47.6156]
                },
                "$minDistance": 1,
                "$maxDistance": 2000
            }
        }
    }, {
        "projection": {"name": 1}
    }))

    print(result)
    client.close()

find_restaurants_nearby()
```

------

# \$1near
<a name="near"></a>

Der `$near` Operator in Amazon DocumentDB wird verwendet, um Dokumente zu finden, die sich geografisch in der Nähe eines bestimmten Punktes befinden. Er gibt Dokumente zurück, die nach Entfernung sortiert sind, wobei die Dokumente, die sich am nächsten befinden, zuerst angezeigt werden. Dieser Operator erfordert einen 2dSphere-Geodatenindex und ist nützlich für Näherungsabfragen von Standortdaten.

**Parameter**
+ `$geometry`: Ein GeoJSON Point-Objekt, das den Mittelpunkt für die Near-Abfrage definiert.
+ `$maxDistance`: (optional) Die maximale Entfernung in Metern vom angegebenen Punkt, die ein Dokument haben darf, um der Abfrage zu entsprechen.
+ `$minDistance`: (optional) Die Mindestentfernung in Metern vom angegebenen Punkt, die ein Dokument haben darf, um der Abfrage zu entsprechen.

**Anforderungen an den Index**
+ `2dsphere index`: Erforderlich für Geodatenabfragen zu GeoJSON-Punktdaten.

## Beispiel (MongoDB Shell)
<a name="near-examples"></a>

Das folgende Beispiel zeigt, wie Sie den `$near` Operator verwenden können, um die Restaurants zu finden, die einem bestimmten Ort in Seattle, Washington, am nächsten liegen.

**Erstellen Sie Beispieldokumente**

```
db.usarestaurants.insert([
  {
    "name": "Noodle House",
    "city": "Seattle",
    "state": "Washington",
    "rating": 4.8,
    "location": { "type": "Point", "coordinates": [-122.3517, 47.6159] }
  },
  {
    "name": "Pike Place Grill",
    "city": "Seattle",
    "state": "Washington",
    "rating": 4.2,
    "location": { "type": "Point", "coordinates": [-122.3403, 47.6062] }
  },
  {
    "name": "Lola",
    "city": "Seattle",
    "state": "Washington",
    "rating": 4.5,
    "location": { "type": "Point", "coordinates": [-122.3407, 47.6107] }
  }
]);
```

**Erstellen Sie einen 2dSphere-Index**

```
db.usarestaurants.createIndex({ "location": "2dsphere" });
```

**Abfragebeispiel mit GeoJSON Point**

```
db.usarestaurants.find({
  location: {
    $near: {
      $geometry: {
        type: "Point",
        coordinates: [-122.3516, 47.6156]
      },
      $maxDistance: 100,
      $minDistance: 10
    }
  }
});
```

**Ausgabe**

```
{
  "_id" : ObjectId("69031ec9ea1c2922a1ce5f4a"),
  "name" : "Noodle House",
  "city" : "Seattle",
  "state" : "Washington",
  "rating" : 4.8,
  "location" : {
    "type" : "Point",
    "coordinates" : [ -122.3517, 47.6159 ]
  }
}
```

## Codebeispiele
<a name="near-code"></a>

Um ein Codebeispiel für die Verwendung des `$near` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findNearbyRestaurants() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const restaurants = db.collection('usarestaurants');

  // Create 2dsphere index
  await restaurants.createIndex({ "location": "2dsphere" });

  const result = await restaurants.find({
    location: {
      $near: {
        $geometry: {
          type: "Point",
          coordinates: [-122.3516, 47.6156]
        },
        $maxDistance: 100,
        $minDistance: 10
      }
    }
  }).toArray();

  console.log(result);

  client.close();
}

findNearbyRestaurants();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_nearby_restaurants():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    restaurants = db['usarestaurants']

    # Create 2dsphere index
    restaurants.create_index([("location", "2dsphere")])

    result = list(restaurants.find({
        'location': {
            '$near': {
                '$geometry': {
                    'type': 'Point',
                    'coordinates': [-122.3516, 47.6156]
                },
                '$maxDistance': 100,
                '$minDistance': 10
            }
        }
    }))

    print(result)

    client.close()

find_nearby_restaurants()
```

------

# \$1nearSphere
<a name="nearSphere"></a>

Der `$nearSphere` Operator in Amazon DocumentDB wird verwendet, um Dokumente zu finden, die sich innerhalb einer bestimmten Entfernung von einem Geodatenpunkt befinden. Dieser Operator ist besonders nützlich für geografische Abfragen, z. B. für die Suche nach allen Restaurants in einem bestimmten Umkreis eines bestimmten Standorts.

**Parameter**
+ `$geometry`: Ein GeoJSON-Objekt, das den Referenzpunkt darstellt. Muss ein `Point` Objekt mit `coordinates` Feldern `type` und sein.
+ `$minDistance`: (optional) Der Mindestabstand (in Metern) vom Referenzpunkt, den Dokumente haben müssen.
+ `$maxDistance`: (optional) Der maximale Abstand (in Metern) vom Referenzpunkt, den Dokumente haben müssen.

## Beispiel (MongoDB Shell)
<a name="nearSphere-examples"></a>

In diesem Beispiel finden wir alle Restaurants im Umkreis von 2 Kilometern (2000 Metern) von einem bestimmten Ort in Seattle, WA.

**Erstellen Sie Beispieldokumente**

```
db.usarestaurants.insert([
  {
    name: "Noodle House",
    location: { type: "Point", coordinates: [-122.3516, 47.6156] }
  },
  {
    name: "Pike Place Grill",
    location: { type: "Point", coordinates: [-122.3403, 47.6101] }
  },
  {
    name: "Seattle Coffee Co.",
    location: { type: "Point", coordinates: [-122.3339, 47.6062] }
  }
]);
```

**Beispiel für eine Abfrage**

```
db.usarestaurants.find({
  location: {
    $nearSphere: {
      $geometry: {
        type: "Point",
        coordinates: [-122.3516, 47.6156]
      },
      $minDistance: 1,
      $maxDistance: 2000
    }
  }
}, {
  name: 1
});
```

**Ausgabe**

```
{ "_id" : ObjectId("611f3da985009a81ad38e74b"), "name" : "Noodle House" }
{ "_id" : ObjectId("611f3da985009a81ad38e74c"), "name" : "Pike Place Grill" }
```

## Codebeispiele
<a name="nearSphere-code"></a>

Um ein Codebeispiel für die Verwendung des `$nearSphere` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findNearbyRestaurants() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const restaurants = db.collection('usarestaurants');

  const result = await restaurants.find({
    location: {
      $nearSphere: {
        $geometry: {
          type: "Point",
          coordinates: [-122.3516, 47.6156]
        },
        $minDistance: 1,
        $maxDistance: 2000
      }
    }
  }, {
    projection: { name: 1 }
  }).toArray();

  console.log(result);
  client.close();
}

findNearbyRestaurants();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_nearby_restaurants():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    restaurants = db.usarestaurants

    result = list(restaurants.find({
        'location': {
            '$nearSphere': {
                '$geometry': {
                    'type': 'Point',
                    'coordinates': [-122.3516, 47.6156]
                },
                '$minDistance': 1,
                '$maxDistance': 2000
            }
        }
    }, {
        'name': 1
    }))

    print(result)
    client.close()

find_nearby_restaurants()
```

------

# Abfrage- und Projektionsoperatoren
<a name="mongo-apis-query-projection-operators"></a>

Dieser Abschnitt enthält detaillierte Informationen zu Abfrage- und Projektionsoperatoren, die von Amazon DocumentDB unterstützt werden.

**Topics**
+ [\$1](dollar-projection.md)
+ [\$1all](all.md)
+ [\$1and](and.md)
+ [\$1bitsAllClear](bitsAllClear.md)
+ [\$1bitsAllSet](bitsAllSet.md)
+ [\$1bitsAnyClear](bitsAnyClear.md)
+ [\$1bitsAnySet](bitsAnySet.md)
+ [\$1comment](comment.md)
+ [\$1elemMatch](elemMatch.md)
+ [\$1eq](eq.md)
+ [\$1exists](exists.md)
+ [\$1expr](expr.md)
+ [\$1gt](gt.md)
+ [\$1gte](gte.md)
+ [\$1in](in.md)
+ [\$1jsonSchema](jsonSchema.md)
+ [\$1lt](lt.md)
+ [\$1mod](mod-query.md)
+ [\$1lte](lte.md)
+ [\$1meta](meta.md)
+ [\$1ne](ne.md)
+ [\$1nin](nin.md)
+ [\$1nor](nor.md)
+ [\$1not](not.md)
+ [\$1or](or.md)
+ [\$1regex](regex.md)
+ [\$1slice](slice-projection.md)
+ [\$1size](size-query.md)
+ [\$1text](text.md)
+ [\$1type](type.md)

# \$1
<a name="dollar-projection"></a>

Der `$` Projektionsoperator begrenzt den Inhalt eines Array-Felds so, dass nur das erste Element zurückgegeben wird, das der Abfragebedingung entspricht. Er wird verwendet, um ein einzelnes passendes Array-Element zu projizieren.

**Parameter**
+ `field.$`: Das Array-Feld mit dem Positionsoperator zur Projektion des ersten passenden Elements.

## Beispiel (MongoDB Shell)
<a name="dollar-projection-examples"></a>

Das folgende Beispiel zeigt, wie der `$` Projektionsoperator verwendet wird, um nur das passende Array-Element zurückzugeben.

**Erstellen Sie Beispieldokumente**

```
db.students.insertMany([
  { _id: 1, name: "Alice", grades: [85, 92, 78, 95] },
  { _id: 2, name: "Bob", grades: [70, 88, 92, 65] },
  { _id: 3, name: "Charlie", grades: [95, 89, 91, 88] }
]);
```

**Beispiel für eine Abfrage**

```
db.students.find(
  { grades: { $gte: 90 } },
  { name: 1, "grades.$": 1 }
);
```

**Ausgabe**

```
{ "_id" : 1, "name" : "Alice", "grades" : [ 92 ] }
{ "_id" : 2, "name" : "Bob", "grades" : [ 92 ] }
{ "_id" : 3, "name" : "Charlie", "grades" : [ 95 ] }
```

In diesem Beispiel wird für jeden Schüler nur die erste Note zurückgegeben, die größer oder gleich 90 ist.

## Codebeispiele
<a name="dollar-projection-code"></a>

Um ein Codebeispiel für die Verwendung des `$` Projektionsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('students');

  const result = await collection.find(
    { grades: { $gte: 90 } },
    { projection: { name: 1, "grades.$": 1 } }
  ).toArray();

  console.log(JSON.stringify(result, null, 2));
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['students']

    result = list(collection.find(
        {'grades': {'$gte': 90}},
        {'name': 1, 'grades.$': 1}
    ))

    print(result)
    client.close()

example()
```

------

# \$1all
<a name="all"></a>

Der `$all` Operator in Amazon DocumentDB wird verwendet, um Dokumente abzugleichen, bei denen der Wert eines Felds ein Array ist und alle angegebenen Elemente enthält, unabhängig von der Reihenfolge der Elemente im Array.

**Parameter**
+ `field`: Der Name des zu prüfenden Feldes.
+ `[value1, value2, ...]`: Die Liste der Werte, die im Array übereinstimmen sollen.

 

**Wird `$elemMatch` innerhalb eines `$all` Ausdrucks verwendet**

Einschränkungen in Bezug auf die Verwendung des `$elemMatch` Operators innerhalb eines `$all` Ausdrucks finden [`$elemMatch`Verwendung innerhalb eines Ausdrucks `$all`](functional-differences.md#functional-differences.elemMatch) Sie unter.

 

**Dollar (\$1) in Feldnamen**

Einschränkungen [Dollar (\$1) und Punkt (.) in Feldnamen](functional-differences.md#functional-differences-dollardot) bei der Abfrage von Feldern mit `$` Präfix `$all` in verschachtelten Objekten finden Sie unter.

## Beispiel (MongoDB Shell)
<a name="all-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$all` Operators zum Abrufen von Dokumenten, bei denen das Feld „Farben“ ein Array ist, das sowohl „Rot“ als auch „Blau“ enthält.

**Erstellen Sie Beispieldokumente**

```
db.example.insertMany([
  { "Item": "Pen", "Colors": ["Red", "Blue", "Green"] },
  { "Item": "Notebook", "Colors": ["Blue", "White"] },
  { "Item": "Poster Paint", "Colors": ["Red", "Yellow", "White"] }
])
```

**Beispiel für eine Abfrage**

```
db.example.find({ "Colors": { $all: ["Red", "Blue"] } }).pretty()
```

**Ausgabe**

```
{
  "_id" : ObjectId("6137d6c5b3a1d35e0b6ee6ad"),
  "Item" : "Pen",
  "Colors" : [ 
          "Red", 
          "Blue", 
          "Green" 
  ]
}
```

## Codebeispiele
<a name="all-code"></a>

Um ein Codebeispiel für die Verwendung des `$all` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('example');

  const result = await collection.find({ "Colors": { $all: ["Red", "Blue"] } }).toArray();
  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['example']

    result = list(collection.find({ "Colors": { "$all": ["Red", "Blue"] } }))
    print(result)

    client.close()

example()
```

------

# \$1and
<a name="and"></a>

Der `$and` Operator in Amazon DocumentDB wird verwendet, um mehrere Ausdrücke zu kombinieren und sie als eine einzige Bedingung auszuwerten. Er gibt zurück`true`, ob alle angegebenen Ausdrücke als 0 ausgewertet werden`true`, und `false` andernfalls. Dieser Operator ist nützlich, um mehrere Kriterien auf eine Abfrage anzuwenden.

**Parameter**
+ `expression1`: Ein erforderlicher Ausdruck, der einen booleschen Wert ergibt.
+ `expression2`: Ein erforderlicher Ausdruck, der einen booleschen Wert ergibt.
+ `...`: Zusätzliche erforderliche Ausdrücke, die zu booleschen Werten ausgewertet werden.

## Beispiel (MongoDB Shell)
<a name="and-examples"></a>

Das folgende Beispiel zeigt, wie der `$and` Operator verwendet wird, um alle Dokumente in der Sammlung „Benutzer“ zu finden, bei denen das Feld „Alter“ größer als 18 und das Feld „Status“ „aktiv“ ist.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { name: "John", age: 25, status: "active" },
  { name: "Jane", age: 17, status: "active" },
  { name: "Bob", age: 30, status: "inactive" },
  { name: "Alice", age: 22, status: "active" }
]);
```

**Beispiel für eine Abfrage**

```
db.users.find({
  $and: [
    { age: { $gt: 18 } },
    { status: "active" }
  ]
});
```

**Ausgabe**

```
[
  { "_id" : ObjectId("614e3c4b63f5892e7c4e2345"), "name" : "John", "age" : 25, "status" : "active" },
  { "_id" : ObjectId("614e3c4b63f5892e7c4e2347"), "name" : "Alice", "age" : 22, "status" : "active" }
]
```

## Codebeispiele
<a name="and-code"></a>

Um ein Codebeispiel für die Verwendung des `$and` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findActiveUsersOlderThan18() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const users = db.collection('users');

  const activeUsersOlderThan18 = await users.find({
    $and: [
      { age: { $gt: 18 } },
      { status: 'active' }
    ]
  }).toArray();

  console.log(activeUsersOlderThan18);
  await client.close();
}

findActiveUsersOlderThan18();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_active_users_older_than_18():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    users = db['users']

    active_users_older_than_18 = list(users.find({
        '$and': [
            {'age': {'$gt': 18}},
            {'status': 'active'}
        ]
    }))

    print(active_users_older_than_18)
    client.close()

find_active_users_older_than_18()
```

------

# \$1bitsAllClear
<a name="bitsAllClear"></a>

Der `$bitsAllClear` Operator in Amazon DocumentDB wird verwendet, um die Dokumente abzugleichen, bei denen alle angegebenen Bits in einem Feld gelöscht (auf 0 gesetzt) wurden. Dieser Operator kann nützlich sein, um bitweise Operationen mit gespeicherten Daten durchzuführen.

**Parameter**
+ `field`: Das Feld, in dem geprüft werden soll, ob die angegebenen Bits gelöscht wurden.
+ `value`: Die numerische Bitmaske, die angibt, welche Bits geprüft werden sollen, oder eine Liste von Bitpositionen, die überprüft werden sollen. Eine numerische Bitmaske kann binär (0b...), dezimal, hexadezimal (0x...), oktal (0o...) oder binär () sein. BinData In einer Liste von Bitpositionen ist die Position des niedrigstwertigen Bits 0.

## Beispiel (MongoDB Shell)
<a name="bitsAllClear-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$bitsAllClear` Operators in Amazon DocumentDB.

**Erstellen Sie Beispieldokumente**

```
db.collection.insertMany([
  { _id: 1, bits: 0b1010 },
  { _id: 2, bits: 0b1100 },
  { _id: 3, bits: 0b0101 }
]);
```

**Beispiel für eine Abfrage**

```
db.collection.find({
  bits: { $bitsAllClear: 0b0011 }
})
```

**Ausgabe**

```
{ "_id" : 2, "bits" : 12 }
```

Die Abfrage prüft, ob alle durch die Bitmaske angegebenen Bits `0b0011` (die zwei niedrigstwertigen Bits) im `bits` Feld gelöscht wurden. Das Dokument mit `_id` 2 erfüllt diese Bedingung, da in seinem `bits` Feld diese Bits gelöscht wurden.

## Codebeispiele
<a name="bitsAllClear-code"></a>

Um ein Codebeispiel für die Verwendung des `$bitsAllClear` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('collection');

  const result = await collection.find({
    bits: { $bitsAllClear: 0b0011 }
  }).toArray();

  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['collection']

    result = list(collection.find({
        'bits': { '$bitsAllClear': 0b0011 }
    }))

    print(result)

    client.close()

example()
```

------

# \$1bitsAllSet
<a name="bitsAllSet"></a>

Der `$bitsAllSet` Operator in Amazon DocumentDB wird verwendet, um Dokumente abzufragen, bei denen ein bestimmter Satz von Bits in einem Feld alle auf 1 gesetzt ist. Dieser Operator ermöglicht es Ihnen, bitweise Operationen an Feldwerten durchzuführen. Er kann nützlich sein, wenn Sie den Status einzelner Bits innerhalb eines numerischen Werts überprüfen müssen.

**Parameter**
+ `field`: Der Name des numerischen Felds, für das die bitweise Operation ausgeführt werden soll.
+ `value`: Die numerische Bitmaske, die angibt, welche Bits geprüft werden sollen, oder eine Liste von Bitpositionen, die überprüft werden sollen. Eine numerische Bitmaske kann binär (0b...), dezimal, hexadezimal (0x...), oktal (0o...) oder binär () sein. BinData In einer Liste von Bitpositionen ist die Position des niedrigstwertigen Bits 0.

## Beispiel (MongoDB Shell)
<a name="bitsAllSet-examples"></a>

Das folgende Beispiel zeigt, wie der `$bitsAllSet` Operator verwendet wird, um Dokumente zu finden, in denen in dem `flags` Feld alle Bits gesetzt sind, die durch die Bitmaske angegeben sind.

**Erstellen Sie Beispieldokumente**

```
db.collection.insert([
  { _id: 1, flags: 0b1010 },
  { _id: 2, flags: 0b1100 },
  { _id: 3, flags: 0b1110 }
])
```

**Beispiel für eine Abfrage**

```
db.collection.find({ flags: { $bitsAllSet: 0b1100 } })
```

**Ausgabe**

```
{ "_id": 2, "flags": 12 },
{ "_id": 3, "flags": 14 }
```

In diesem Beispiel sucht die Abfrage nach Dokumenten, in denen für das `flags` Feld alle Bits gesetzt sind, die durch die Bitmaske `0b1100` (die den Dezimalwert 12 darstellt) angegeben sind. Die Dokumente mit `_id` 2 und 3 entsprechen diesen Kriterien, da für ihre `flags` Feldwerte alle erforderlichen Bits gesetzt sind (das dritte und das viertniedrigste Bit).

## Codebeispiele
<a name="bitsAllSet-code"></a>

Um ein Codebeispiel für die Verwendung des `$bitsAllSet` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findWithBitsAllSet() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('collection');

  const result = await collection.find({ flags: { $bitsAllSet: 0b1100 } }).toArray();
  console.log(result);

  await client.close();
}

findWithBitsAllSet();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_with_bits_all_set():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.collection

    result = list(collection.find({ 'flags': { '$bitsAllSet': 0b1100 } }))
    print(result)

    client.close()

find_with_bits_all_set()
```

------

# \$1bitsAnyClear
<a name="bitsAnyClear"></a>

Der `$bitsAnyClear` Operator in Amazon DocumentDB wird verwendet, um die Dokumente abzugleichen, bei denen eines der angegebenen Bits in einem Feld gelöscht (auf 0 gesetzt) wurde. Dies kann nützlich sein, um bitweise Operationen an Feldwerten durchzuführen, die in Dokumenten gespeichert sind.

**Parameter**
+ `field`: Das zu prüfende Feld.
+ `value`: Die numerische Bitmaske, die angibt, welche Bits geprüft werden sollen, oder eine Liste von Bitpositionen, die überprüft werden sollen. Eine numerische Bitmaske kann binär (0b...), dezimal, hexadezimal (0x...), oktal (0o...) oder binär () sein. BinData In einer Liste von Bitpositionen ist die Position des niedrigstwertigen Bits 0.

## Beispiel (MongoDB Shell)
<a name="bitsAnyClear-examples"></a>

Das folgende Beispiel zeigt, wie der `$bitsAnyClear` Operator verwendet wird, um zu überprüfen, ob ein Bit im `status` Feld der `items` Sammlung leer ist.

**Erstellen Sie Beispieldokumente**

```
db.items.insertMany([
  { "_id": 1, "status": 7 },
  { "_id": 2, "status": 15 },
  { "_id": 3, "status": 31 }
]);
```

**Beispiel für eine Abfrage**

```
db.items.find({ "status": { $bitsAnyClear: 8 } })
```

**Ausgabe**

```
{ "_id" : 1, "status" : 7 }
```

In diesem Beispiel sucht die Abfrage nach Dokumenten, in denen das `status` Feld Leerzeichen (0) in der Bitmaske `8` (binär`1000`) enthält. Das Dokument mit den `status` Werten `7` (binär`111`) entspricht der Abfrage, da die angegebene Bitmaske mindestens ein Bit Clear enthält. Das passende Clear-Bit ist das viertniedrigstwertige Bit.

## Codebeispiele
<a name="bitsAnyClear-code"></a>

Um ein Codebeispiel für die Verwendung des `$bitsAnyClear` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('items');

  const result = await collection.find({ "status": { $bitsAnyClear: 8 } }).toArray();
  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.items

    result = list(collection.find({ "status": { "$bitsAnyClear": 8 } }))
    print(result)

    client.close()

example()
```

------

# \$1bitsAnySet
<a name="bitsAnySet"></a>

Der `$bitsAnySet` Operator in Amazon DocumentDB wird verwendet, um Dokumente abzufragen, bei denen mindestens ein Bit in den angegebenen Bits in einem Feld auf 1 gesetzt ist. Dieser Operator ermöglicht es Ihnen, bitweise Operationen an den in Feldern gespeicherten Werten durchzuführen, was eine effiziente Abfrage und Analyse von Daten mit bitweisen Eigenschaften ermöglicht.

**Parameter**
+ `field`: Der Feldname, auf den die bitweise Operation angewendet werden soll.
+ `value`: Die numerische Bitmaske, die angibt, welche Bits geprüft werden sollen, oder eine Liste von Bitpositionen, die überprüft werden sollen. Eine numerische Bitmaske kann binär (0b...), dezimal, hexadezimal (0x...), oktal (0o...) oder binär () sein. BinData In einer Liste von Bitpositionen ist die Position des niedrigstwertigen Bits 0.

## Beispiel (MongoDB Shell)
<a name="bitsAnySet-examples"></a>

Das folgende Beispiel zeigt, wie der `$bitsAnySet` Operator verwendet wird, um Dokumente zu finden, bei denen mindestens ein Bit im `flags` Feld gesetzt ist.

**Erstellen Sie Beispieldokumente**

```
db.collection.insertMany([
  { _id: 1, flags: 0b1010 },
  { _id: 2, flags: 0b1100 },
  { _id: 3, flags: 0b0011 },
  { _id: 4, flags: 0b0100 }
]);
```

**Beispiel für eine Abfrage**

```
db.collection.find({
  flags: { $bitsAnySet: 0b1010 }
})
```

**Ausgabe**

```
{ "_id" : 1, "flags" : 10 }
{ "_id" : 2, "flags" : 12 }
{ "_id" : 3, "flags" : 3 }
```

Die Abfrage gibt die Dokumente zurück, in denen mindestens eines der in der Bitmaske angegebenen Bits im `flags` Feld gesetzt `0b1010` ist.

## Codebeispiele
<a name="bitsAnySet-code"></a>

Um ein Codebeispiel für die Verwendung des `$bitsAnySet` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('collection');

  const result = await collection.find({
    flags: { $bitsAnySet: 0b1010 }
  }).toArray();

  console.log(result);

  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
collection = db['collection']

result = list(collection.find({
    'flags': { '$bitsAnySet': 0b1010 }
}))

print(result)

client.close()
```

------

# \$1comment
<a name="comment"></a>

Der `$comment` Operator in Amazon DocumentDB wird verwendet, um einen Kommentar an eine Abfrage anzuhängen. Dies kann nützlich sein, um zusätzlichen Kontext oder zusätzliche Informationen zur Abfrage bereitzustellen, was für Debugging- oder Dokumentationszwecke hilfreich sein kann. Der angehängte Kommentar wird als Teil der Ausgabe von Operationen wie db.currentOp () erscheinen.

**Parameter**
+ `string`: Der Kommentar, der der Abfrage angehängt ist.

## Beispiel (MongoDB Shell)
<a name="comment-examples"></a>

Das folgende Beispiel zeigt, wie der `$comment` Operator in Amazon DocumentDB verwendet wird.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { name: "John Doe", age: 30, email: "john.doe@example.com" },
  { name: "Jane Smith", age: 25, email: "jane.smith@example.com" },
  { name: "Bob Johnson", age: 35, email: "bob.johnson@example.com" }
]);
```

**Beispiel für eine Abfrage**

```
db.users.find({ age: { $gt: 25 } }, { _id: 0, name: 1, age: 1 }).comment("Retrieve users older than 25");
```

**Ausgabe**

```
{ "name" : "John Doe", "age" : 30 }
{ "name" : "Bob Johnson", "age" : 35 }
```

## Codebeispiele
<a name="comment-code"></a>

Um ein Codebeispiel für die Verwendung des `$comment` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const users = db.collection('users');

  const result = await users.find({ age: { $gt: 25 } }, { projection: { _id: 0, name: 1, age: 1 } })
                           .comment('Retrieve users older than 25')
                           .toArray();

  console.log(result);

  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def main():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    users = db.users

    result = list(users.find({ 'age': { '$gt': 25 }}, { '_id': 0, 'name': 1, 'age': 1 })
                .comment('Retrieve users older than 25'))

    print(result)

    client.close()

if __name__ == '__main__':
    main()
```

------

# \$1elemMatch
<a name="elemMatch"></a>

Der `$elemMatch` Operator in Amazon DocumentDB wird verwendet, um ein Array-Feld abzufragen und Dokumente zurückzugeben, bei denen mindestens ein Element im Array den angegebenen Kriterien entspricht. Dieser Operator ist besonders nützlich, wenn Sie komplexe Datenstrukturen mit verschachtelten Arrays oder eingebetteten Dokumenten haben.

Planner Version 2.0 fügte Indexunterstützung für hinzu. `$elemMatch`

**Parameter**
+ `field`: Das abzufragende Array-Feld.
+ `query`: Die Kriterien, die mit den Array-Elementen verglichen werden sollen.

 

**Verwendung `$elemMatch` innerhalb eines `$all` Ausdrucks**

Einschränkungen in Bezug auf die Verwendung des `$elemMatch` Operators innerhalb eines `$all` Ausdrucks finden [`$elemMatch`Verwendung innerhalb eines Ausdrucks `$all`](functional-differences.md#functional-differences.elemMatch) Sie unter.

## Beispiel (MongoDB Shell)
<a name="elemMatch-examples"></a>

Das folgende Beispiel zeigt, wie der `$elemMatch` Operator verwendet wird, um Dokumente zu finden, bei denen das `parts` Array mindestens ein Element enthält, das den angegebenen Kriterien entspricht.

**Erstellen Sie Beispieldokumente**

```
db.col.insertMany([
  { _id: 1, parts: [{ part: "xyz", qty: 10 }, { part: "abc", qty: 20 }] },
  { _id: 2, parts: [{ part: "xyz", qty: 5 }, { part: "abc", qty: 10 }] },
  { _id: 3, parts: [{ part: "xyz", qty: 15 }, { part: "abc", qty: 100 }] },
  { _id: 4, parts: [{ part: "abc", qty: 150 }] }
]);
```

**Beispiel für eine Abfrage**

```
db.col.find({
  parts: { "$elemMatch": { part: "xyz", qty: { $lt: 11 } } }
})
```

**Ausgabe**

```
{ "_id" : 1, "parts" : [ { "part" : "xyz", "qty" : 10 }, { "part" : "abc", "qty" : 20 } ] }
{ "_id" : 2, "parts" : [ { "part" : "xyz", "qty" : 5 }, { "part" : "abc", "qty" : 10 } ] }
```

## Codebeispiele
<a name="elemMatch-code"></a>

Um ein Codebeispiel für die Verwendung des `$elemMatch` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const col = db.collection('col');

  const result = await col.find({
    parts: { 
      "$elemMatch": { part: "xyz", qty: { $lt: 11 } } 
    }
  }).toArray();

  console.log(JSON.stringify(result, null, 2));
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    col = db['col']

    result = list(col.find({
      'parts': { 
        '$elemMatch': {'part': 'xyz', 'qty': {'$lt': 11}} 
      }
    }))

    print(result)
    client.close()

example()
```

------

# \$1eq
<a name="eq"></a>

Der `$eq` Operator in Amazon DocumentDB wird verwendet, um Dokumente abzugleichen, bei denen der Wert eines Felds dem angegebenen Wert entspricht. Dieser Operator wird häufig in der `find()` Methode zum Abrufen von Dokumenten verwendet, die die angegebenen Kriterien erfüllen.

**Parameter**
+ `field`: Das Feld, das auf die Gleichheitsbedingung überprüft werden soll.
+ `value`: Der Wert, der mit dem Feld verglichen werden soll.

## Beispiel (MongoDB Shell)
<a name="eq-examples"></a>

Das folgende Beispiel zeigt, wie der `$eq` Operator verwendet wird, um alle Dokumente zu finden, bei denen das `name` Feld gleich ist. `"Thai Curry Palace"`

**Erstellen Sie Beispieldokumente**

```
db.restaurants.insertMany([
  { name: "Thai Curry Palace", cuisine: "Thai", features: ["Private Dining"] },
  { name: "Italian Bistro", cuisine: "Italian", features: ["Outdoor Seating"] },
  { name: "Mexican Grill", cuisine: "Mexican", features: ["Takeout"] }
]);
```

**Beispiel für eine Abfrage**

```
db.restaurants.find({ name: { $eq: "Thai Curry Palace" } });
```

**Ausgabe**

```
{ "_id" : ObjectId("68ee586f916df9d39f3d9414"), "name" : "Thai Curry Palace", "cuisine" : "Thai", "features" : [ "Private Dining" ] }
```

## Codebeispiele
<a name="eq-code"></a>

Um ein Codebeispiel für die Verwendung des `$eq` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findByName(name) {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('restaurants');

  const results = await collection.find({ name: { $eq: name } }).toArray();
  console.log(results);

  await client.close();
}

findByName("Thai Curry Palace");
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_by_name(name):
    client = MongoClient("mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false")
    db = client["test"]
    collection = db["restaurants"]

    results = list(collection.find({ "name": { "$eq": name } }))
    print(results)

    client.close()

find_by_name("Thai Curry Palace")
```

------

# \$1exists
<a name="exists"></a>

Der `$exists` Operator wird verwendet, um zu überprüfen, ob ein Feld in einem Dokument existiert oder nicht. `$exists`besonders nützlich bei der Arbeit mit Sparse-Indizes in Amazon DocumentDB, bei denen das indizierte Feld möglicherweise nicht in allen Dokumenten vorhanden ist.

Um einen Sparse-Index zu verwenden, den Sie in einer Abfrage erstellt haben, müssen Sie die `$exists`-Bedingungen für die Felder verwenden, die der Index abdecken. Wenn Sie es weglassen`$exists`, verwendet Amazon DocumentDB den Sparse-Index nicht für die Abfrage.

**Parameter**
+ `field`: Der Feldname, dessen Existenz überprüft werden soll.
+ `value`: Ein boolescher Wert (`true`oder`false`), der angibt, ob das Feld in den entsprechenden Dokumenten existieren (`true`) oder nicht existieren (`false`) soll.

## Beispiel (MongoDB Shell)
<a name="exists-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$exists` Operators mit einem spärlichen Index für das `special_diets` Feld in der `food` Sammlung.

**Erstellen Sie Beispieldokumente**

```
db.food.insertMany([
  { _id: 1, name: "Apple", special_diets: ["vegetarian", "gluten-free"] },
  { _id: 2, name: "Broccoli" },
  { _id: 3, name: "Chicken", special_diets: ["dairy-free"] }
]);
```

**Erstellen Sie einen spärlichen Index für das Feld `special\$1diets`**

```
db.food.createIndex({ "special_diets": 1 }, { sparse: true, name: "special_diets_sparse_asc" });
```

**Beispiel für eine Abfrage**

```
db.food.find({ "special_diets": { $exists: true } });
```

**Ausgabe**

```
[
  { "_id" : 1, "name" : "Apple", "special_diets" : [ "vegetarian", "gluten-free" ] },
  { "_id" : 3, "name" : "Chicken", "special_diets" : [ "dairy-free" ] }
]
```

## Codebeispiele
<a name="exists-code"></a>

Um ein Codebeispiel für die Verwendung des `$exists` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('food');

  const result = await collection.find({ "special_diets": { $exists: true } }).toArray();
  console.log(result);

  await client.close();
}

main();
```

------
#### [ Python ]

```
import pymongo

client = pymongo.MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
collection = db['food']

result = list(collection.find({"special_diets": {"$exists": True}}))
print(result)

client.close()
```

------

# \$1expr
<a name="expr"></a>

Neu ab Version 4.0.

Wird von Elastic Cluster nicht unterstützt.

Der `$expr` Operator in Amazon DocumentDB ermöglicht es Ihnen, Aggregationsausdrücke innerhalb der Abfragesprache zu verwenden. Er ermöglicht es Ihnen, komplexe Vergleiche und Berechnungen für Felder innerhalb eines Dokuments durchzuführen, ähnlich wie Sie Aggregationspipeline-Phasen verwenden würden.

**Parameter**
+ `expression`: Ein Ausdruck, der einen booleschen Wert zurückgibt, sodass Sie Vergleiche und Berechnungen für Dokumentfelder durchführen können.

## Beispiel (MongoDB Shell)
<a name="expr-examples"></a>

Das folgende Beispiel zeigt, wie der `$expr` Operator verwendet wird, um alle Dokumente zu finden, bei denen das `manufacturingCost` Feld größer als das `price` Feld ist.

**Erstellen Sie Beispieldokumente**

```
db.inventory.insertMany([
  { item: "abc", manufacturingCost: 500, price: 100 },
  { item: "def", manufacturingCost: 300, price: 450 },
  { item: "ghi", manufacturingCost: 400, price: 120 }
]);
```

**Beispiel für eine Abfrage**

```
db.inventory.find({
  $expr: {
    $gt: ["$manufacturingCost", "$price"]
  }
})
```

**Ausgabe**

```
{ "_id" : ObjectId("60b9d4d68d2cac581bc5a89a"), "item" : "abc", "manufacturingCost" : 500, "price" : 100 },
{ "_id" : ObjectId("60b9d4d68d2cac581bc5a89c"), "item" : "ghi", "manufacturingCost" : 400, "price" : 120 }
```

## Codebeispiele
<a name="expr-code"></a>

Um ein Codebeispiel für die Verwendung des `$expr` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('inventory');

  const result = await collection.find({
    $expr: {
      $gt: ['$manufacturingCost', '$price']
    }
  }).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['inventory']

    result = list(collection.find({
        '$expr': {
            '$gt': ['$manufacturingCost', '$price']
        }
    }))

    print(result)
    client.close()

example()
```

------

# \$1gt
<a name="gt"></a>

Der `$gt` Operator in Amazon DocumentDB wird verwendet, um Dokumente auszuwählen, bei denen der Wert des angegebenen Felds größer als der angegebene Wert ist. Dieser Operator ist nützlich, um Daten auf der Grundlage numerischer Vergleiche zu filtern und abzufragen.

**Parameter**
+ `field`: Das zu vergleichende Feld.
+ `value`: Der Wert, mit dem verglichen werden soll.

## Beispiel (MongoDB Shell)
<a name="gt-examples"></a>

Das folgende Beispiel zeigt, wie der `$gt` Operator verwendet wird, um alle Dokumente zu finden, bei denen das `age` Feld größer als 30 ist.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { name: "John", age: 25 },
  { name: "Jane", age: 32 },
  { name: "Bob", age: 45 },
  { name: "Alice", age: 28 }
]);
```

**Beispiel für eine Abfrage**

```
db.users.find({ age: { $gt: 30 } });
```

**Ausgabe**

```
{ "_id" : ObjectId("6249e5c22a5d39884a0a0001"), "name" : "Jane", "age" : 32 },
{ "_id" : ObjectId("6249e5c22a5d39884a0a0002"), "name" : "Bob", "age" : 45 }
```

## Codebeispiele
<a name="gt-code"></a>

Um ein Codebeispiel für die Verwendung des `$gt` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findUsersOlderThan30() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const users = await db.collection('users').find({ age: { $gt: 30 } }).toArray();
  console.log(users);
  await client.close();
}

findUsersOlderThan30();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_users_older_than_30():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    users = list(db.users.find({ 'age': { '$gt': 30 } }))
    print(users)
    client.close()

find_users_older_than_30()
```

------

# \$1gte
<a name="gte"></a>

Der `$gte` Operator in Amazon DocumentDB wird verwendet, um Werte abzugleichen, die größer oder gleich einem bestimmten Wert sind. Dieser Operator ist nützlich, um Daten auf der Grundlage numerischer Vergleiche zu filtern und abzufragen.

**Parameter**
+ `field`: Das Feld, das mit dem angegebenen Wert verglichen werden soll.
+ `value`: Der Wert, der mit dem Feld verglichen werden soll.

## Beispiel (MongoDB Shell)
<a name="gte-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$gte` Operators in Amazon DocumentDB, um alle Dokumente zu finden, bei denen das Feld „Alter“ größer oder gleich 25 ist.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { _id: 1, name: "John", age: 20 },
  { _id: 2, name: "Jane", age: 25 },
  { _id: 3, name: "Bob", age: 30 },
  { _id: 4, name: "Alice", age: 35 }
]);
```

**Beispiel für eine Abfrage**

```
db.users.find({ age: { $gte: 25 } }, { _id: 0, name: 1, age: 1 });
```

**Ausgabe**

```
{ "name" : "Jane", "age" : 25 }
{ "name" : "Bob", "age" : 30 }
{ "name" : "Alice", "age" : 35 }
```

## Codebeispiele
<a name="gte-code"></a>

Um ein Codebeispiel für die Verwendung des `$gte` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findUsersAboveAge(age) {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const users = db.collection('users');

  const result = await users.find({ age: { $gte: age } }, { projection: { _id: 0, name: 1, age: 1 } }).toArray();
  console.log(result);

  await client.close();
}

findUsersAboveAge(25);
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_users_above_age(age):
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    users = db.users

    result = list(users.find({ 'age': { '$gte': age } }, { '_id': 0, 'name': 1, 'age': 1 }))
    print(result)

    client.close()

find_users_above_age(25)
```

------

# \$1in
<a name="in"></a>

Der `$in` Operator in Amazon DocumentDB ist ein logischer Abfrageoperator, mit dem Sie Dokumente finden können, bei denen der Wert eines Felds einem der in einem Array angegebenen Werte entspricht.

**Parameter**
+ `field`: Das Feld, das mit dem angegebenen Array verglichen werden soll.
+ `[value1, value2, ...]`: Ein Array von Werten, die mit dem angegebenen Feld abgeglichen werden sollen.

 

**Dollar (`$`) in Feldnamen**

Einschränkungen [Dollar (\$1) und Punkt (.) in Feldnamen](functional-differences.md#functional-differences-dollardot) bei der Abfrage von Feldern mit `$` Präfix `$in` in verschachtelten Objekten finden Sie unter.

## Beispiel (MongoDB Shell)
<a name="in-examples"></a>

Das folgende Beispiel zeigt, wie der `$in` Operator verwendet wird, um Dokumente zu finden, bei denen das `color` Feld einer der Werte im bereitgestellten Array ist.

**Erstellen Sie Beispieldokumente**

```
db.colors.insertMany([
  { "_id": 1, "color": "red" },
  { "_id": 2, "color": "green" },
  { "_id": 3, "color": "blue" },
  { "_id": 4, "color": "yellow" },
  { "_id": 5, "color": "purple" }
])
```

**Beispiel für eine Abfrage**

```
db.colors.find({ "color": { "$in": ["red", "blue", "purple"] } })
```

**Ausgabe**

```
{ "_id": 1, "color": "red" },
{ "_id": 3, "color": "blue" },
{ "_id": 5, "color": "purple" }
```

## Codebeispiele
<a name="in-code"></a>

Um ein Codebeispiel für die Verwendung des `$in` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findByIn() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('colors');

  const result = await collection.find({ "color": { "$in": ["red", "blue", "purple"] } }).toArray();
  console.log(result);

  await client.close();
}

findByIn();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_by_in():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.colors

    result = list(collection.find({ "color": { "$in": ["red", "blue", "purple"] } }))
    print(result)

    client.close()

find_by_in()
```

------

# \$1jsonSchema
<a name="jsonSchema"></a>

Neu ab Version 4.0.

Wird von Elastic Cluster nicht unterstützt.

Der `$jsonSchema` Operator in Amazon DocumentDB wird verwendet, um Dokumente auf der Grundlage eines bestimmten JSON-Schemas zu filtern. Mit diesem Operator können Sie Dokumente abfragen, die einem bestimmten JSON-Schema entsprechen, und so sicherstellen, dass die abgerufenen Dokumente bestimmten Struktur- und Datentypanforderungen entsprechen.

Wenn Sie den `$jsonSchema` Bewertungsabfrageoperator als Teil einer Sammlungserstellung verwenden, können Sie das Schema der Dokumente überprüfen, die in die Sammlung eingefügt werden. [Verwenden der JSON-Schemavalidierung](json-schema-validation.md)Weitere Informationen finden Sie unter.

**Parameter**
+ `required`(Array): Gibt die erforderlichen Felder im Dokument an.
+ `properties`(Objekt): Definiert den Datentyp und andere Einschränkungen für jedes Feld im Dokument.

## Beispiel (MongoDB Shell)
<a name="jsonSchema-examples"></a>

Das folgende Beispiel zeigt, wie der `$jsonSchema` Operator verwendet wird, um die `employees` Sammlung so zu filtern, dass nur Dokumente abgerufen werden`name`, die die `age` Felder `employeeId` und enthalten und das `employeeId` Feld vom Typ `string` ist.

**Erstellen Sie Beispieldokumente**

```
db.employees.insertMany([
  { "name": { "firstName": "Carol", "lastName": "Smith" }, "employeeId": "1" },
  { "name": { "firstName": "Emily", "lastName": "Brown" }, "employeeId": "2", "age": 25 },
  { "name": { "firstName": "William", "lastName": "Taylor" }, "employeeId": 3, "age": 24 },
  { "name": { "firstName": "Jane", "lastName": "Doe" }, "employeeId": "4" }
]);
```

**Beispiel für eine Abfrage**

```
db.employees.aggregate([
  { $match: {
    $jsonSchema: {
      required: ["name", "employeeId", "age"],
      properties: { "employeeId": { "bsonType": "string" } }
    }
  }}
]);
```

**Ausgabe**

```
{ "_id" : ObjectId("6908e8b61f77fc26b2ecd26f"), "name" : { "firstName" : "Emily", "lastName" : "Brown" }, "employeeId" : "2", "age" : 25 }
```

## Codebeispiele
<a name="jsonSchema-code"></a>

Um ein Codebeispiel für die Verwendung des `$jsonSchema` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function filterByJsonSchema() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('employees');

  const result = await collection.aggregate([
    {
      $match: {
        $jsonSchema: {
          required: ['name', 'employeeId', 'age'],
          properties: { 'employeeId': { 'bsonType': 'string' } }
        }
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

filterByJsonSchema();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def filter_by_json_schema():
  client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
  db = client['test']
  collection = db['employees']

  result = list(collection.aggregate([
    {
      '$match': {
        '$jsonSchema': {
          'required': ['name', 'employeeId', 'age'],
          'properties': {'employeeId': {'bsonType': 'string'}}
        }
      }
    }
  ]))

  print(result)
  client.close()

filter_by_json_schema()
```

------

# \$1lt
<a name="lt"></a>

Der `$lt` Operator in Amazon DocumentDB wird verwendet, um Werte abzugleichen, die unter dem angegebenen Wert liegen. Dieser Operator ist nützlich, um Daten auf der Grundlage numerischer Vergleiche zu filtern und abzufragen.

**Parameter**
+ `field`: Der zu prüfende Feldname.
+ `value`: Der Wert, mit dem verglichen werden soll.

## Beispiel (MongoDB Shell)
<a name="lt-examples"></a>

Das folgende Beispiel zeigt, wie der `$lt` Operator verwendet wird, um Dokumente abzurufen, deren `Inventory.OnHand` Wert kleiner als 50 ist.

**Erstellen Sie Beispieldokumente**

```
db.example.insertMany([
  { "_id": 1, "Inventory": { "OnHand": 25, "Sold": 60 }, "Colors": ["Red", "Blue"] },
  { "_id": 2, "Inventory": { "OnHand": 75, "Sold": 40 }, "Colors": ["Red", "White"] },
  { "_id": 3, "Inventory": { "OnHand": 10, "Sold": 85 }, "Colors": ["Red", "Green"] }
]);
```

**Beispiel für eine Abfrage**

```
db.example.find({ "Inventory.OnHand": { $lt: 50 } })
```

**Ausgabe**

```
{ "_id" : 1, "Inventory" : { "OnHand" : 25, "Sold" : 60 }, "Colors" : [ "Red", "Blue" ] }
{ "_id" : 3, "Inventory" : { "OnHand" : 10, "Sold" : 85 }, "Colors" : [ "Red", "Green" ] }
```

## Codebeispiele
<a name="lt-code"></a>

Um ein Codebeispiel für die Verwendung des `$lt` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('example');

  const result = await collection.find({ "Inventory.OnHand": { $lt: 50 } }).toArray();
  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['example']

    result = list(collection.find({ "Inventory.OnHand": { "$lt": 50 } }))
    print(result)

    client.close()

example()
```

------

# \$1mod
<a name="mod-query"></a>

Der `$mod` Abfrageoperator wählt Dokumente aus, in denen ein durch einen Divisor geteilter Feldwert einen angegebenen Rest hat. Dies ist nützlich, um Dokumente auf der Grundlage modularer arithmetischer Bedingungen zu filtern.

**Parameter**
+ `divisor`: Die Zahl, durch die dividiert werden soll.
+ `remainder`: Der erwartete Restwert.

## Beispiel (MongoDB Shell)
<a name="mod-query-examples"></a>

Das folgende Beispiel zeigt, wie der `$mod` Operator verwendet wird, um alle Bestellungen zu finden, bei denen die Menge eine ungerade Zahl ist.

**Erstellen Sie Beispieldokumente**

```
db.orders.insertMany([
  { _id: 1, item: "Widget", quantity: 15 },
  { _id: 2, item: "Gadget", quantity: 20 },
  { _id: 3, item: "Tool", quantity: 7 },
  { _id: 4, item: "Device", quantity: 12 },
  { _id: 5, item: "Part", quantity: 9 }
]);
```

**Beispiel für eine Abfrage**

```
db.orders.find({ quantity: { $mod: [2, 1] } });
```

**Ausgabe**

```
{ "_id" : 1, "item" : "Widget", "quantity" : 15 }
{ "_id" : 3, "item" : "Tool", "quantity" : 7 }
{ "_id" : 5, "item" : "Part", "quantity" : 9 }
```

Diese Abfrage gibt Dokumente zurück, bei denen die Menge geteilt durch 2 einen Rest von 1 hat, wodurch praktisch alle ungeraden Mengen ausgewählt werden.

## Codebeispiele
<a name="mod-query-code"></a>

Um ein Codebeispiel für die Verwendung des `$mod` Abfrageoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('orders');

  const result = await collection.find({ quantity: { $mod: [2, 1] } }).toArray();

  console.log(JSON.stringify(result, null, 2));
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['orders']

    result = list(collection.find({'quantity': {'$mod': [2, 1]}}))

    print(result)
    client.close()

example()
```

------

# \$1lte
<a name="lte"></a>

Der `$lte` Operator in Amazon DocumentDB wird verwendet, um Dokumente abzugleichen, bei denen der Wert eines angegebenen Felds kleiner oder gleich dem angegebenen Wert ist. Dieser Operator ist nützlich, um Daten auf der Grundlage numerischer Vergleiche zu filtern und abzufragen.

**Parameter**
+ `field`: Das zu vergleichende Feld.
+ `value`: Der Wert, mit dem verglichen werden soll.

## Beispiel (MongoDB Shell)
<a name="lte-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$lte` Operators zum Abrufen von Dokumenten, bei denen das `quantity` Feld kleiner oder gleich 10 ist.

**Erstellen Sie Beispieldokumente**

```
db.inventory.insertMany([
  { item: "canvas", qty: 100 },
  { item: "paint", qty: 50 },
  { item: "brush", qty: 10 },
  { item: "paper", qty: 5 }
]);
```

**Beispiel für eine Abfrage**

```
db.inventory.find({ qty: { $lte: 10 } });
```

**Ausgabe**

```
{ "_id" : ObjectId("..."), "item" : "brush", "qty" : 10 },
{ "_id" : ObjectId("..."), "item" : "paper", "qty" : 5 }
```

## Codebeispiele
<a name="lte-code"></a>

Um ein Codebeispiel für die Verwendung des `$lte` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require("mongodb");

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db("test");
  const collection = db.collection("inventory");

  const result = await collection.find({ qty: { $lte: 10 } }).toArray();
  console.log(result);

  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def main():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client["test"]
    collection = db["inventory"]

    result = list(collection.find({ "qty": { "$lte": 10 } }))
    print(result)

    client.close()

if __name__ == "__main__":
    main()
```

------

# \$1meta
<a name="meta"></a>

Der `$meta` Operator wird verwendet, um auf Metadaten zuzugreifen, die mit der aktuellen Abfrageausführung verknüpft sind. Dieser Operator wird hauptsächlich für Textsuchoperationen verwendet, bei denen die Metadaten Informationen über die Relevanz der übereinstimmenden Dokumente liefern können.

**Parameter**
+ `textScore`: Ruft das Ergebnis der Textsuche für das Dokument ab. Diese Bewertung gibt die Relevanz des Dokuments für die Textsuchabfrage an.

## Beispiel (MongoDB Shell)
<a name="meta-examples"></a>

Das folgende Beispiel zeigt, wie der `$meta` Operator verwendet wird, um das Ergebnis der Textsuche für Dokumente abzurufen, die einer Textsuchabfrage entsprechen.

**Erstellen Sie Beispieldokumente**

```
db.documents.insertMany([
  { _id: 1, title: "Coffee Basics", content: "Coffee is a popular beverage made from roasted coffee beans." },
  { _id: 2, title: "Coffee Culture", content: "Coffee coffee coffee - the ultimate guide to coffee brewing and coffee preparation." },
  { _id: 3, title: "Tea vs Coffee", content: "Many people prefer tea over coffee for its health benefits." }
]);
```

**Textindex erstellen**

```
db.documents.createIndex({ content: "text" });
```

**Beispiel für eine Abfrage**

```
db.documents.find(
  { $text: { $search: "coffee" } },
  { _id: 0, title: 1, content: 1, score: { $meta: "textScore" } }
).sort({ score: { $meta: "textScore" } });
```

**Ausgabe**

```
[
  {
    title: 'Coffee Culture',
    content: 'Coffee coffee coffee - the ultimate guide to coffee brewing and coffee preparation.',
    score: 0.8897688388824463
  },
  {
    title: 'Coffee Basics',
    content: 'Coffee is a popular beverage made from roasted coffee beans.',
    score: 0.75990891456604
  },
  {
    title: 'Tea vs Coffee',
    content: 'Many people prefer tea over coffee for its health benefits.',
    score: 0.6079270839691162
  }
]
```

## Codebeispiele
<a name="meta-code"></a>

Um ein Codebeispiel für die Verwendung des `$meta` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findWithTextScore() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('documents');

  const result = await collection.find(
    { $text: { $search: "coffee" } },
    { projection: { _id: 0, title: 1, content: 1, score: { $meta: "textScore" } } }
  ).sort({ score: { $meta: "textScore" } }).toArray();

  console.log(result);
  client.close();
}

findWithTextScore();
```

------
#### [ Python ]

```
from pymongo import MongoClient

client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
collection = db['documents']

for doc in collection.find(
    {'$text': {'$search': 'coffee'}},
    {'_id': 0, 'title': 1, 'content': 1, 'score': {'$meta': 'textScore'}}
).sort([('score', {'$meta': 'textScore'})]):
    print(doc)

client.close()
```

------

# \$1ne
<a name="ne"></a>

Der `$ne` Operator wird verwendet, um Dokumente abzugleichen, bei denen der Wert eines Felds nicht dem angegebenen Wert entspricht. Es ist ein Vergleichsoperator, der in Abfrageprädikaten zum Filtern von Dokumenten verwendet werden kann.

Planner Version 2.0 hat Indexunterstützung für hinzugefügt. `$ne`

**Parameter**
+ `field`: Das zu überprüfende Feld.
+ `value`: Der Wert, gegen den geprüft werden soll.

## Beispiel (MongoDB Shell)
<a name="ne-examples"></a>

In diesem Beispiel finden wir alle Dokumente in der `users` Sammlung, bei denen das `status` Feld ungleich ist. `"active"`

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { name: "John", status: "active" },
  { name: "Jane", status: "inactive" },
  { name: "Bob", status: "suspended" },
  { name: "Alice", status: "active" }
]);
```

**Beispiel für eine Abfrage**

```
db.users.find({ status: { $ne: "active" } });
```

**Ausgabe**

```
[
  {
    _id: ObjectId('...'),
    name: 'Jane',
    status: 'inactive'
  },
  {
    _id: ObjectId('...'),
    name: 'Bob',
    status: 'suspended'
  }
]
```

## Codebeispiele
<a name="ne-code"></a>

Um ein Codebeispiel für die Verwendung des `$ne` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const users = db.collection('users');

  const result = await users.find({ status: { $ne: 'active' } }).toArray();
  console.log(result);

  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
users = db['users']

result = list(users.find({ 'status': { '$ne': 'active' } }))
print(result)

client.close()
```

------

# \$1nin
<a name="nin"></a>

Der `$nin` Operator wird verwendet, um Werte abzugleichen, die sich nicht im angegebenen Array befinden. Es ist die Umkehrung des `$in` Operators, der mit Werten übereinstimmt, die sich im angegebenen Array befinden.

Planner Version 2.0 fügte Indexunterstützung für `$nin` hinzu.

**Parameter**
+ `field`: Das zu überprüfende Feld.
+ `array`: Das Array von Werten, anhand dessen geprüft werden soll.

 

**Dollar (`$`) in Feldnamen**

Einschränkungen [Dollar (\$1) und Punkt (.) in Feldnamen](functional-differences.md#functional-differences-dollardot) bei der Abfrage von Feldern mit `$` Präfix `$nin` in verschachtelten Objekten finden Sie unter.

## Beispiel (MongoDB Shell)
<a name="nin-examples"></a>

Das folgende Beispiel zeigt, wie der `$nin` Operator verwendet wird, um Dokumente zu finden, bei denen das `category` Feld nicht „Fiction“ oder „Mystery“ entspricht.

**Erstellen Sie Beispieldokumente**

```
db.books.insertMany([
  { title: "The Great Gatsby", author: "F. Scott Fitzgerald", category: "Fiction" },
  { title: "To Kill a Mockingbird", author: "Harper Lee", category: "Fiction" },
  { title: "The Girl on the Train", author: "Paula Hawkins", category: "Mystery" },
  { title: "The Martian", author: "Andy Weir", category: "Science Fiction" },
  { title: "The Alchemist", author: "Paulo Coelho", category: "Philosophy" }
])
```

**Beispiel für eine Abfrage**

```
db.books.find({
  category: {
    $nin: ["Fiction", "Mystery"]
  }
})
```

**Ausgabe**

```
[
  {
    _id: ObjectId('...'),
    title: 'The Martian',
    author: 'Andy Weir',
    category: 'Science Fiction'
  },
  {
    _id: ObjectId('...'),
    title: 'The Alchemist',
    author: 'Paulo Coelho',
    category: 'Philosophy'
  }
]
```

## Codebeispiele
<a name="nin-code"></a>

Um ein Codebeispiel für die Verwendung des `$nin` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findBooksNotInCategories(categories) {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const books = await db.collection('books').find({
    category: {
      $nin: categories
    }
  }).toArray();
  console.log(books);
  client.close();
}

findBooksNotInCategories(['Fiction', 'Mystery']);
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_books_not_in_categories(categories):
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    books = list(db.books.find({
        'category': {
            '$nin': categories
        }
    }))
    print(books)
    client.close()

find_books_not_in_categories(['Fiction', 'Mystery'])
```

------

# \$1nor
<a name="nor"></a>

Der `$nor` Operator wird verwendet, um Dokumente abzugleichen, bei denen keine der angegebenen Abfragebedingungen zutrifft. Er ähnelt der logischen Operation „NOR“, bei der das Ergebnis wahr ist, wenn keiner der Operanden wahr ist.

**Parameter**
+ `expression1`: Der erste Ausdruck, der ausgewertet werden soll.
+ `expression2`: Der zweite auszuwertende Ausdruck.
+ `expressionN`: Zusätzliche auszuwertende Ausdrücke.

## Beispiel (MongoDB Shell)
<a name="nor-examples"></a>

Das folgende Beispiel demonstriert die Verwendung des `$nor` Operators, indem Dokumente abgerufen werden, bei denen das `qty` Feld nicht weniger als 20 ist und das `size` Feld nicht „XL“ entspricht.

**Erstellen Sie Beispieldokumente**

```
db.items.insertMany([
  { qty: 10, size: "M" },
  { qty: 15, size: "XL" },
  { qty: 25, size: "L" },
  { qty: 30, size: "XL" }
])
```

**Beispiel für eine Abfrage**

```
db.items.find({
  $nor: [
    { qty: { $lt: 20 } },
    { size: "XL" }
  ]
})
```

**Ausgabe**

```
[
  { "_id" : ObjectId("..."), "qty" : 25, "size" : "L" }
]
```

## Codebeispiele
<a name="nor-code"></a>

Um ein Codebeispiel für die Verwendung des `$nor` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('items');

  const result = await collection.find({
    $nor: [
      { qty: { $lt: 20 } },
      { size: "XL" }
    ]
  }).toArray();

  console.log(result);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['items']

    result = list(collection.find({
        '$nor': [
            { 'qty': { '$lt': 20 } },
            { 'size': 'XL' }
        ]
    }))

    print(result)

    client.close()

example()
```

------

# \$1not
<a name="not"></a>

Der `$not` Operator wird verwendet, um das Ergebnis eines bestimmten Ausdrucks zu negieren. Damit können Sie Dokumente auswählen, bei denen die angegebene Bedingung nicht erfüllt ist.

Planner Version 2.0 hat Indexunterstützung für `$not {eq}` und hinzugefügt`$not {in}`.

**Parameter**
+ `expression`: Der Ausdruck, der negiert werden soll.

## Beispiel (MongoDB Shell)
<a name="not-examples"></a>

Das folgende Beispiel zeigt, wie der `$not` Operator verwendet wird, um Dokumente zu finden, bei denen das `status` Feld nicht „aktiv“ entspricht.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { name: "John", status: "active" },
  { name: "Jane", status: "inactive" },
  { name: "Bob", status: "pending" },
  { name: "Alice", status: "active" }
]);
```

**Beispiel für eine Abfrage**

```
db.users.find({ status: { $not: { $eq: "active" } } });
```

**Ausgabe**

```
[
  {
    _id: ObjectId('...'),
    name: 'Jane',
    status: 'inactive'
  },
  {
    _id: ObjectId('...'),
    name: 'Bob',
    status: 'pending'
  }
]
```

## Codebeispiele
<a name="not-code"></a>

Um ein Codebeispiel für die Verwendung des `$not` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient, Filters } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('users');

  const result = await collection.find({
    status: { $not: { $eq: "active" } }
  }).toArray();

  console.log(result);

  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient
from bson.son import SON

client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
collection = db['users']

result = collection.find({
    "status": {"$not": {"$eq": "active"}}
})

for doc in result:
    print(doc)

client.close()
```

------

# \$1or
<a name="or"></a>

Der `$or` Operator wird verwendet, um eine logische ODER-Operation für ein Array von zwei oder mehr Ausdrücken auszuführen. Er gibt Dokumente zurück, die mindestens einem der Ausdrücke entsprechen. Dieser Operator ist nützlich, wenn Sie nach Dokumenten abfragen müssen, die eine von mehreren Bedingungen erfüllen.

**Parameter**
+ `expression1`: Der erste Ausdruck, der ausgewertet werden soll.
+ `expression2`: Der zweite auszuwertende Ausdruck.
+ `...`: Zusätzliche auszuwertende Ausdrücke (optional).

## Beispiel (MongoDB Shell)
<a name="or-examples"></a>

Das folgende Beispiel zeigt, wie der `$or` Operator verwendet `make` wird, um Dokumente zu finden, bei denen der entweder "TruckForYou" beim Modell „Heavy H1" oder" SportForYou "beim Modell „Bolid 1" ist.

**Erstellen Sie Beispieldokumente**

```
db.cars.insertMany([
  { make: "TruckForYou", model: "Heavy H1", year: 2020 },
  { make: "SportForYou", model: "Bolid 1", year: 2021 },
  { make: "TruckForYou", model: "Cargo 5", year: 2019 },
  { make: "SportForYou", model: "Racer 2", year: 2022 }
]);
```

**Beispiel für eine Abfrage**

```
db.cars.find({
  $or: [
    { make: "TruckForYou", model: "Heavy H1" },
    { make: "SportForYou", model: "Bolid 1" }
  ]
});
```

**Ausgabe**

```
[
  {
    _id: ObjectId('...'),
    make: 'TruckForYou',
    model: 'Heavy H1',
    year: 2020
  },
  {
    _id: ObjectId('...'),
    make: 'SportForYou',
    model: 'Bolid 1',
    year: 2021
  }
]
```

## Codebeispiele
<a name="or-code"></a>

Um ein Codebeispiel für die Verwendung des `$or` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findCarsByMakeModel() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const cars = db.collection('cars');

  const result = await cars.find({
    $or: [
      { make: "TruckForYou", model: "Heavy H1" },
      { make: "SportForYou", model: "Bolid 1" }
    ]
  }).toArray();

  console.log(result);
  client.close();
}

findCarsByMakeModel();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_cars_by_make_model():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    cars = db.cars

    result = list(cars.find({
        '$or': [
            {'make': 'TruckForYou', 'model': 'Heavy H1'},
            {'make': 'SportForYou', 'model': 'Bolid 1'}
        ]
    }))

    print(result)
    client.close()

find_cars_by_make_model()
```

------

# \$1regex
<a name="regex"></a>

Mit dem `$regex` Operator können Sie einen Abgleich mit regulären Ausdrücken für Zeichenkettenfelder durchführen. Es ist ein leistungsstarkes Tool zum Suchen und Filtern von Dokumenten, die auf komplexen Mustern basieren.

**Parameter**
+ `regular expression`: Das reguläre Ausdrucksmuster, das mit dem Feld abgeglichen werden soll.
+ `$options`: (optional) Stellt Optionen zur Änderung des Suchverhaltens bereit, z. B. Berücksichtigung von Groß- und Kleinschreibung, globaler Abgleich usw.

## Beispiel (MongoDB Shell)
<a name="regex-examples"></a>

Das folgende Beispiel zeigt, wie der `$regex` Operator verwendet wird, um nach Dokumenten zu suchen, bei denen das Feld „Name“ einem bestimmten Muster entspricht.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { name: "John Doe" },
  { name: "Jane Smith" },
  { name: "Alice Johnson" },
  { name: "Bob Williams" },
  { name: "Charlie Davis" }
]);
```

**Beispiel für eine Abfrage**

```
db.users.find({ name: { $regex: /^A/ } })
```

**Ausgabe**

```
[
  { "_id" : ObjectId("..."), "name" : "Alice Johnson" }
]
```

Diese Abfrage gibt alle Dokumente zurück, bei denen das Feld „Name“ mit dem Buchstaben „A“ beginnt.

## Codebeispiele
<a name="regex-code"></a>

Um ein Codebeispiel für die Verwendung des `$regex` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('users');

  const results = await collection.find({ name: { $regex: /^A/ } }).toArray();
  console.log(results);

  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def main():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['users']

    results = list(collection.find({ 'name': { '$regex': '^A' } }))
    print(results)

    client.close()

if __name__ == "__main__":
    main()
```

------

# \$1slice
<a name="slice-projection"></a>

Der `$slice` Projektionsoperator begrenzt die Anzahl der Array-Elemente, die in einem Abfrageergebnis zurückgegeben werden. Er ermöglicht es Ihnen, eine bestimmte Anzahl von Elementen vom Anfang oder Ende eines Array-Felds abzurufen, ohne das gesamte Array zu laden.

**Parameter**
+ `field`: Das zu projizierende Array-Feld.
+ `count`: Anzahl der zurückzugebenden Elemente. Positive Werte geben Elemente vom Anfang zurück, negative Werte vom Ende.

## Beispiel (MongoDB Shell)
<a name="slice-projection-examples"></a>

Das folgende Beispiel zeigt, wie der `$slice` Projektionsoperator verwendet wird, um nur die ersten beiden Elemente aus einem Array-Feld zurückzugeben.

**Erstellen Sie Beispieldokumente**

```
db.inventory.insertMany([
  { _id: 1, item: "notebook", tags: ["office", "school", "supplies", "writing"] },
  { _id: 2, item: "pen", tags: ["office", "writing"] },
  { _id: 3, item: "folder", tags: ["office", "supplies", "storage", "organization"] }
]);
```

**Beispiel für eine Abfrage**

```
db.inventory.find(
  {},
  { item: 1, tags: { $slice: 2 } }
)
```

**Ausgabe**

```
{ "_id" : 1, "item" : "notebook", "tags" : [ "office", "school" ] }
{ "_id" : 2, "item" : "pen", "tags" : [ "office", "writing" ] }
{ "_id" : 3, "item" : "folder", "tags" : [ "office", "supplies" ] }
```

## Codebeispiele
<a name="slice-projection-code"></a>

Um ein Codebeispiel für die Verwendung des `$slice` Projektionsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('inventory');

  const result = await collection.find(
    {},
    { projection: { item: 1, tags: { $slice: 2 } } }
  ).toArray();

  console.log(JSON.stringify(result, null, 2));
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['inventory']

    result = list(collection.find(
        {},
        {'item': 1, 'tags': {'$slice': 2}}
    ))

    print(result)
    client.close()

example()
```

------

# \$1size
<a name="size-query"></a>

Der `$size` Abfrageoperator sucht nach Dokumenten, in denen ein Array-Feld genau die angegebene Anzahl von Elementen hat. Dies ist nützlich, um Dokumente anhand der Array-Länge zu filtern.

**Parameter**
+ `field`: Das zu prüfende Array-Feld.
+ `count`: Die genaue Anzahl der Elemente, die das Array enthalten muss.

## Beispiel (MongoDB Shell)
<a name="size-query-examples"></a>

Das folgende Beispiel zeigt, wie der `$size` Operator verwendet wird, um alle Produkte zu finden, die genau drei Tags haben.

**Erstellen Sie Beispieldokumente**

```
db.products.insertMany([
  { _id: 1, name: "Laptop", tags: ["electronics", "computers", "portable"] },
  { _id: 2, name: "Mouse", tags: ["electronics", "accessories"] },
  { _id: 3, name: "Desk", tags: ["furniture", "office", "workspace"] },
  { _id: 4, name: "Monitor", tags: ["electronics"] }
]);
```

**Beispiel für eine Abfrage**

```
db.products.find({ tags: { $size: 3 } });
```

**Ausgabe**

```
{ "_id" : 1, "name" : "Laptop", "tags" : [ "electronics", "computers", "portable" ] }
{ "_id" : 3, "name" : "Desk", "tags" : [ "furniture", "office", "workspace" ] }
```

## Codebeispiele
<a name="size-query-code"></a>

Um ein Codebeispiel für die Verwendung des `$size` Abfrageoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('products');

  const result = await collection.find({ tags: { $size: 3 } }).toArray();

  console.log(JSON.stringify(result, null, 2));
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['products']

    result = list(collection.find({'tags': {'$size': 3}}))

    print(result)
    client.close()

example()
```

------

# \$1text
<a name="text"></a>

Der `$text` Operator wird verwendet, um eine Volltextsuche in textindizierten Feldern innerhalb einer Dokumentensammlung durchzuführen. Mit diesem Operator können Sie nach Dokumenten suchen, die bestimmte Wörter oder Ausdrücke enthalten. Er kann mit anderen Abfrageoperatoren kombiniert werden, um Ergebnisse anhand zusätzlicher Kriterien zu filtern.

**Parameter**
+ `$search`: Die Textzeichenfolge, nach der gesucht werden soll.

## Beispiel (MongoDB Shell)
<a name="text-examples"></a>

Das folgende Beispiel zeigt, wie der `$text` Operator verwendet wird, um nach Dokumenten zu suchen, die das Wort „Interesse“ enthalten, und die Ergebnisse anhand eines Felds „star\$1rating“ zu filtern.

**Erstellen Sie Beispieldokumente**

```
db.test.insertMany([
  { "_id": 1, "star_rating": 4, "comments": "apple is red" },
  { "_id": 2, "star_rating": 5, "comments": "pie is delicious" },
  { "_id": 3, "star_rating": 3, "comments": "apples, oranges - healthy fruit" },
  { "_id": 4, "star_rating": 2, "comments": "bake the apple pie in the oven" },
  { "_id": 5, "star_rating": 5, "comments": "interesting couch" },
  { "_id": 6, "star_rating": 5, "comments": "interested in couch for sale, year 2022" }
]);
```

**Textindex erstellen**

```
db.test.createIndex({ comments: "text" });
```

**Beispiel für eine Abfrage**

```
db.test.find({$and: [{star_rating: 5}, {$text: {$search: "interest"}}]})
```

**Ausgabe**

```
{ "_id" : 5, "star_rating" : 5, "comments" : "interesting couch" }
{ "_id" : 6, "star_rating" : 5, "comments" : "interested in couch for sale, year 2022" }
```

Der obige Befehl gibt Dokumente mit einem textindizierten Feld zurück, das eine beliebige Form von „Interesse“ und ein „Star\$1Rating“ gleich 5 enthält.

## Codebeispiele
<a name="text-code"></a>

Um ein Codebeispiel für die Verwendung des `$text` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function searchDocuments() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('test');

  const result = await collection.find({
    $and: [
      { star_rating: 5 },
      { $text: { $search: 'interest' } }
    ]
  }).toArray();

  console.log(result);
  client.close();
}

searchDocuments();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def search_documents():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db.test

    result = list(collection.find({
        '$and': [
            {'star_rating': 5},
            {'$text': {'$search': 'interest'}}
        ]
    }))

    print(result)
    client.close()

search_documents()
```

------

# \$1type
<a name="type"></a>

Der `$type` Operator wird verwendet, um den Datentyp eines Felds in einem Dokument zu überprüfen. Er kann verwendet werden, wenn typspezifische Operationen oder Validierungen erforderlich sind. Der `$type` Operator gibt den BSON-Typ des ausgewerteten Ausdrucks zurück. Der zurückgegebene Typ ist eine Zeichenfolge, die dem Typ des Felds oder Ausdrucks entspricht.

Planner Version 2.0 fügte Indexunterstützung für hinzu`$type`.

**Parameter**
+ `expression`: Der auszuwertende Ausdruck.

## Beispiel (MongoDB Shell)
<a name="type-examples"></a>

**Erstellen Sie Beispieldokumente**

```
db.documents.insertMany([
  { _id: 1, name: "John", age: 30, email: "john@example.com" },
  { _id: 2, name: "Jane", age: "25", email: 123456 },
  { _id: 3, name: 123, age: true, email: null }
]);
```

**Beispiel für eine Abfrage**

```
db.documents.find({
  $or: [
    { age: { $type: "number" } },
    { email: { $type: "string" } },
    { name: { $type: "string" } }
  ]
})
```

**Ausgabe**

```
[
  { "_id": 1, "name": "John", "age": 30, "email": "john@example.com" },
  { "_id": 2, "name": "Jane", "age": "25", "email": 123456 }
]
```

Diese Abfrage gibt die Dokumente zurück, in denen das `age` Feld vom Typ „Zahl“, das `email` Feld vom Typ „Zeichenfolge“ und das `name` Feld vom Typ „Zeichenfolge“ ist.

## Codebeispiele
<a name="type-code"></a>

Um ein Codebeispiel für die Verwendung des `$type` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findByType() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('documents');

  const results = await collection.find({
    $or: [
      { age: { $type: 'number' } },
      { email: { $type: 'string' } },
      { name: { $type: 'string' } }
    ]
  }).toArray();

  console.log(results);
  client.close();
}

findByType();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_by_type():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['documents']

    results = list(collection.find({
        '$or': [
            {'age': {'$type': 'number'}},
            {'email': {'$type': 'string'}},
            {'name': {'$type': 'string'}}
        ]
    }))

    print(results)
    client.close()

find_by_type()
```

------

# Operatoren aktualisieren
<a name="mongo-apis-update-operators"></a>

Dieser Abschnitt enthält detaillierte Informationen zu Aktualisierungsoperatoren, die von Amazon DocumentDB unterstützt werden.

**Topics**
+ [\$1](dollar-update.md)
+ [\$1[]](dollarBrackets-update.md)
+ [\$1[<identifier>]](dollarIdentifier-update.md)
+ [\$1addToSet](addToSet.md)
+ [\$1bit](bit.md)
+ [\$1currentDate](currentDate.md)
+ [\$1each](each.md)
+ [\$1inc](inc.md)
+ [\$1max](max-update.md)
+ [\$1min](min-update.md)
+ [\$1mul](mul.md)
+ [\$1pop](pop.md)
+ [\$1position](position.md)
+ [\$1pull](pull.md)
+ [\$1pullAll](pullAll.md)
+ [\$1push](push.md)
+ [\$1rename](rename.md)
+ [\$1set](set-update.md)
+ [\$1setOnInsert](setOnInsert.md)
+ [\$1slice](slice-update.md)
+ [\$1sort](sort-update.md)
+ [\$1unset](unset-update.md)

# \$1
<a name="dollar-update"></a>

Der `$` Positionsoperator aktualisiert das erste Array-Element, das der Abfragebedingung entspricht. Er dient als Platzhalter für die Position des übereinstimmenden Array-Elements.

**Parameter**
+ `field.$`: Das Array-Feld mit dem Positionsoperator zur Aktualisierung des ersten passenden Elements.

## Beispiel (MongoDB Shell)
<a name="dollar-update-examples"></a>

Das folgende Beispiel zeigt, wie der `$` Positionsoperator verwendet wird, um ein bestimmtes Array-Element zu aktualisieren.

**Erstellen Sie Beispieldokumente**

```
db.inventory.insertMany([
  { _id: 1, item: "Widget", quantities: [10, 20, 30] },
  { _id: 2, item: "Gadget", quantities: [5, 15, 25] }
]);
```

**Beispiel für eine Abfrage**

```
db.inventory.updateOne(
  { _id: 1, quantities: 20 },
  { $set: { "quantities.$": 22 } }
);
```

**Ausgabe**

```
{
  "_id" : 1,
  "item" : "Widget",
  "quantities" : [ 10, 22, 30 ]
}
```

## Codebeispiele
<a name="dollar-update-code"></a>

Um ein Codebeispiel für die Verwendung des `$` Positionsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function updateDocument() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('inventory');

  await collection.updateOne(
    { _id: 1, quantities: 20 },
    { $set: { "quantities.$": 22 } }
  );

  const updatedDocument = await collection.findOne({ _id: 1 });
  console.log(updatedDocument);

  await client.close();
}

updateDocument();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def update_document():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.inventory

    collection.update_one(
        {'_id': 1, 'quantities': 20},
        {'$set': {'quantities.$': 22}}
    )

    updated_document = collection.find_one({'_id': 1})
    print(updated_document)

    client.close()

update_document()
```

------

# \$1[]
<a name="dollarBrackets-update"></a>

Der `$[]` All-Position-Operator aktualisiert alle Elemente in einem Array. Er wird verwendet, wenn Sie jedes Element in einem Array-Feld ändern müssen.

**Parameter**
+ `field.$[]`: Das Array-Feld mit dem All-Position-Operator zur Aktualisierung aller Elemente.

## Beispiel (MongoDB Shell)
<a name="dollarBrackets-update-examples"></a>

Das folgende Beispiel zeigt, wie der `$[]` Operator verwendet wird, um alle Array-Elemente zu aktualisieren.

**Erstellen Sie Beispieldokumente**

```
db.products.insertOne({
  _id: 1,
  name: "Laptop",
  prices: [1000, 1100, 1200]
});
```

**Beispiel für eine Abfrage**

```
db.products.updateOne(
  { _id: 1 },
  { $inc: { "prices.$[]": 50 } }
);
```

**Ausgabe**

```
{
  "_id" : 1,
  "name" : "Laptop",
  "prices" : [ 1050, 1150, 1250 ]
}
```

## Codebeispiele
<a name="dollarBrackets-update-code"></a>

Um ein Codebeispiel für die Verwendung des `$[]` Operators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function updateDocument() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('products');

  await collection.updateOne(
    { _id: 1 },
    { $inc: { "prices.$[]": 50 } }
  );

  const updatedDocument = await collection.findOne({ _id: 1 });
  console.log(updatedDocument);

  await client.close();
}

updateDocument();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def update_document():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.products

    collection.update_one(
        {'_id': 1},
        {'$inc': {'prices.$[]': 50}}
    )

    updated_document = collection.find_one({'_id': 1})
    print(updated_document)

    client.close()

update_document()
```

------

# \$1[<identifier>]
<a name="dollarIdentifier-update"></a>

Der `$[<identifier>]` gefilterte Positionsoperator aktualisiert alle Array-Elemente, die den angegebenen Filterbedingungen entsprechen. Er wird mit der `arrayFilters` Option verwendet, Array-Elemente selektiv zu aktualisieren.

**Parameter**
+ `field.$[identifier]`: Das Array-Feld mit dem gefilterten Positionsoperator.
+ `arrayFilters`: Eine Reihe von Filterbedingungen, die bestimmen, welche Elemente aktualisiert werden sollen.

## Beispiel (MongoDB Shell)
<a name="dollarIdentifier-update-examples"></a>

Das folgende Beispiel zeigt, wie der `$[<identifier>]` Operator verwendet wird, um bestimmte Array-Elemente auf der Grundlage einer Bedingung zu aktualisieren.

**Erstellen Sie Beispieldokumente**

```
db.students.insertOne({
  _id: 1,
  name: "Alice",
  grades: [
    { subject: "Math", score: 85 },
    { subject: "Science", score: 92 },
    { subject: "History", score: 78 }
  ]
});
```

**Beispiel für eine Abfrage**

```
db.students.updateOne(
  { _id: 1 },
  { $inc: { "grades.$[elem].score": 5 } },
  { arrayFilters: [{ "elem.score": { $gte: 80 } }] }
);
```

**Ausgabe**

```
{
  "_id" : 1,
  "name" : "Alice",
  "grades" : [
    { "subject" : "Math", "score" : 90 },
    { "subject" : "Science", "score" : 97 },
    { "subject" : "History", "score" : 78 }
  ]
}
```

## Codebeispiele
<a name="dollarIdentifier-update-code"></a>

Um ein Codebeispiel für die Verwendung des `$[<identifier>]` Operators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function updateDocument() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('students');

  await collection.updateOne(
    { _id: 1 },
    { $inc: { "grades.$[elem].score": 5 } },
    { arrayFilters: [{ "elem.score": { $gte: 80 } }] }
  );

  const updatedDocument = await collection.findOne({ _id: 1 });
  console.log(updatedDocument);

  await client.close();
}

updateDocument();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def update_document():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.students

    collection.update_one(
        {'_id': 1},
        {'$inc': {'grades.$[elem].score': 5}},
        array_filters=[{'elem.score': {'$gte': 80}}]
    )

    updated_document = collection.find_one({'_id': 1})
    print(updated_document)

    client.close()

update_document()
```

------

# \$1addToSet
<a name="addToSet"></a>

Der `$addToSet` Operator in Amazon DocumentDB wird nur verwendet, um einem Array einen Wert hinzuzufügen, wenn der Wert nicht bereits im Array vorhanden ist. Dies ist nützlich, um sicherzustellen, dass ein Array eindeutige Elemente enthält.

**Parameter**
+ `field`: Das zu aktualisierende Feld.
+ `value`: Der Wert, der dem Array-Feld hinzugefügt werden soll. Dies kann ein einzelner Wert oder ein Ausdruck sein.

## Beispiel (MongoDB Shell)
<a name="addToSet-examples"></a>

Das folgende Beispiel zeigt, wie der `$addToSet` Operator verwendet wird, um einem Array eindeutige Elemente hinzuzufügen.

**Erstellen Sie Beispieldokumente**

```
db.products.insertMany([
  { "_id": 1, "item": "apple", "tags": ["fruit", "red", "round"] },
  { "_id": 2, "item": "banana", "tags": ["fruit", "yellow"] },
  { "_id": 3, "item": "cherry", "tags": ["fruit", "red"] }
])
```

**Beispiel für eine Abfrage**

```
db.products.update(
  { "item": "apple" },
  { $addToSet: { "tags": "green" } }
)
```

**Ausgabe**

```
{ "_id": 1, "item": "apple", "tags": ["fruit", "red", "round", "green"] }
```

In diesem Beispiel fügt der `$addToSet` Operator das Tag „green“ zum Array „tags“ des Dokuments hinzu, wobei das Feld „item“ den Wert „apple“ hat. Da „grün“ noch nicht im Array enthalten war, wurde es hinzugefügt.

## Codebeispiele
<a name="addToSet-code"></a>

Um ein Codebeispiel für die Verwendung des `$addToSet` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('products');

  await collection.updateOne(
    { "item": "apple" },
    { $addToSet: { "tags": "green" } }
  );

  const updatedDoc = await collection.findOne({ "item": "apple" });
  console.log(updatedDoc);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.products

    collection.update_one(
        {"item": "apple"},
        {"$addToSet": {"tags": "green"}}
    )

    updated_doc = collection.find_one({"item": "apple"})
    print(updated_doc)

    client.close()

example()
```

------

# \$1bit
<a name="bit"></a>

Der `$bit` Operator in Amazon DocumentDB ermöglicht es Ihnen, bitweise Operationen an den Bits eines bestimmten Feldes durchzuführen. Dies kann für Aufgaben wie das Setzen, Löschen oder Überprüfen des Zustands einzelner Bits innerhalb einer Zahl nützlich sein.

**Parameter**
+ `field`: Das Feld, in dem bitweise Operationen ausgeführt werden sollen.
+ `and`: Ein ganzzahliger Wert, der verwendet wird, um eine bitweise UND-Operation für das Feld durchzuführen.
+ `or`: Ein ganzzahliger Wert, der verwendet wird, um eine bitweise OR-Operation für das Feld durchzuführen.
+ `xor`: Ein ganzzahliger Wert, der verwendet wird, um eine bitweise XOR-Operation für das Feld durchzuführen.

## Beispiel (MongoDB Shell)
<a name="bit-examples"></a>

Das folgende Beispiel zeigt, wie der `$bit` Operator verwendet wird, um bitweise Operationen an einem numerischen Feld durchzuführen.

**Erstellen Sie Beispieldokumente**

```
db.numbers.insert([
  { "_id": 1, "number": 5 },
  { "_id": 2, "number": 12 }
])
```

**Beispiel für eine Abfrage**

```
db.numbers.update(
  { "_id": 1 },
  { "$bit": { "number": { "and": 3 } } }
)
```

**Ausgabe**

```
{
  "_id": 1,
  "number": 1
}
```

In diesem Beispiel wird der `$bit` Operator verwendet, um eine bitweise UND-Operation für das Feld „Zahl“ des Dokuments mit dem `_id` Wert 1 durchzuführen. Das Ergebnis ist, dass der Wert des Felds „Zahl“ auf 1 gesetzt wird, was das Ergebnis der bitweisen UND-Operation zwischen dem ursprünglichen Wert 5 und dem Wert 3 ist.

## Codebeispiele
<a name="bit-code"></a>

Um ein Codebeispiel für die Verwendung des `$bit` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('numbers');

  await collection.updateOne(
    { "_id": 1 },
    { "$bit": { "number": { "and": 3 } } }
  );

  const result = await collection.findOne({ "_id": 1 });
  console.log(result);

  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
collection = db['numbers']

collection.update_one(
    {"_id": 1},
    {"$bit": {"number": {"and": 3}}}
)

result = collection.find_one({"_id": 1})
print(result)

client.close()
```

------

# \$1currentDate
<a name="currentDate"></a>

Der `$currentDate` Operator wird verwendet, um den Wert eines Felds auf das aktuelle Datum und die aktuelle Uhrzeit festzulegen. Dieser Operator ist nützlich, um ein Feld automatisch mit dem aktuellen Zeitstempel zu aktualisieren, wenn ein Dokument eingefügt oder aktualisiert wird.

**Parameter**
+ `field`: Das Feld, das mit dem aktuellen Datum und der aktuellen Uhrzeit aktualisiert werden soll.
+ `type`: (optional) Gibt den BSON-Typ an, der für das aktuelle Datum verwendet werden soll. Kann `date` oder `timestamp` sein.

## Beispiel (MongoDB Shell)
<a name="currentDate-examples"></a>

Das folgende Beispiel zeigt, wie der `$currentDate` Operator verwendet wird, um das `lastModified` Feld auf das aktuelle Datum und die aktuelle Uhrzeit einzustellen, wenn ein neues Dokument eingefügt wird.

**Erstellen Sie Beispieldokumente**

```
db.users.insert({
  name: "John Doe",
  email: "john.doe@example.com"
})
```

**Beispiel für eine Abfrage**

```
db.users.updateOne(
  { name: "John Doe" },
  { $currentDate: { lastModified: true } }
)
```

**Aktualisiertes Dokument anzeigen**

```
db.users.findOne({ name: "John Doe" })
```

**Ausgabe**

```
{
  _id: ObjectId('...'),
  name: 'John Doe',
  email: 'john.doe@example.com',
  lastModified: ISODate('2025-10-25T22:50:29.963Z')
}
```

## Codebeispiele
<a name="currentDate-code"></a>

Um ein Codebeispiel für die Verwendung des `$currentDate` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function updateUserWithCurrentDate() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const users = db.collection('users');

  await users.updateOne(
    { name: 'John Doe' },
    { $currentDate: { lastModified: true } }
  );

  console.log('User updated with current date');
  client.close();
}

updateUserWithCurrentDate();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def update_user_with_current_date():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    users = db.users

    result = users.update_one(
        {'name': 'John Doe'},
        {'$currentDate': {'lastModified': True}}
    )

    print('User updated with current date')
    client.close()

update_user_with_current_date()
```

------

# \$1each
<a name="each"></a>

Der `$each` Operator wird in Verbindung mit anderen Aktualisierungsoperatoren wie `$push` und verwendet`$addToSet`, um einem Array-Feld mehrere Werte hinzuzufügen. Es ermöglicht das Hinzufügen mehrerer Elemente zu einem Array in einem einzigen Vorgang, anstatt mehrere Aktualisierungsvorgänge ausführen zu müssen.

**Parameter**
+ `value`: Das Array von Werten, die dem Array-Feld hinzugefügt werden sollen.

## Beispiel (MongoDB Shell)
<a name="each-examples"></a>

Das folgende Beispiel zeigt, wie der `$each` Operator zusammen mit dem `$push` Operator verwendet wird, um einem Array-Feld mehrere Elemente hinzuzufügen.

**Erstellen Sie Beispieldokumente**

```
db.fruits.insertOne({
  _id: 1,
  fruits: ["apple", "banana"]
})
```

**Beispiel für eine Abfrage**

```
db.fruits.updateOne(
  { _id: 1 },
  { $push: { fruits: { $each: ["cherry", "durian", "elderberry"] } } }
)
```

**Aktualisiertes Dokument anzeigen**

```
db.fruits.findOne({ _id: 1 })
```

**Ausgabe**

```
{
  _id: 1,
  fruits: [ 'apple', 'banana', 'cherry', 'durian', 'elderberry' ]
}
```

## Codebeispiele
<a name="each-code"></a>

Um ein Codebeispiel für die Verwendung des `$each` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('fruits');

  await collection.updateOne(
    { _id: 1 },
    { $push: { fruits: { $each: ["cherry", "durian", "elderberry"] } } }
  );

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['fruits']

    collection.update_one(
        {'_id': 1},
        {'$push': {'fruits': {'$each': ['cherry', 'durian', 'elderberry']}}}
    )

    client.close()

example()
```

------

# \$1inc
<a name="inc"></a>

Der `$inc` Operator wird verwendet, um den Wert eines Felds um einen bestimmten Betrag zu erhöhen. Er wird verwendet, um ein numerisches Feld, z. B. einen Zähler oder eine Bewertung, zu aktualisieren, ohne dass der aktuelle Wert abgerufen, der neue Wert berechnet und das Feld anschließend aktualisiert werden muss.

**Parameter**
+ `field`: Der Name des Feldes, das erhöht werden soll.
+ `amount`: Der Betrag, um den das Feld erhöht werden soll. Dies kann ein positiver oder negativer Wert sein.

## Beispiel (MongoDB Shell)
<a name="inc-examples"></a>

Das folgende Beispiel zeigt, wie der `$inc` Operator verwendet wird, um das `age` Feld eines Dokuments zu erhöhen.

**Erstellen Sie Beispieldokumente**

```
db.users.insertOne({_id: 123, name: "John Doe", age: 30})
```

**Beispiel für eine Abfrage**

```
db.users.updateOne({_id: 123}, {$inc: {age: 1}})
```

**Aktualisiertes Dokument anzeigen**

```
db.users.findOne({_id: 123})
```

**Ausgabe**

```
{ "_id" : 123, "name" : "John Doe", "age" : 31 }
```

## Codebeispiele
<a name="inc-code"></a>

Um ein Codebeispiel für die Verwendung des `$inc` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function updateWithInc() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('users');

  const result = await collection.updateOne(
    { _id: 123 },
    { $inc: { age: 1 } }
  );

  console.log(result);

  await client.close();
}

updateWithInc();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def update_with_inc():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['users']

    result = collection.update_one(
        {'_id': 123},
        {'$inc': {'age': 1}}
    )

    print(result.modified_count)

    client.close()

update_with_inc()
```

------

# \$1max
<a name="max-update"></a>

Der `$max` Aktualisierungsoperator aktualisiert den Wert eines Felds nur, wenn der angegebene Wert größer als der aktuelle Feldwert ist. Dieser Operator ist nützlich, um Maximalwerte bei Aktualisierungen beizubehalten.

**Parameter**
+ `field`: Das zu aktualisierende Feld.
+ `value`: Der Wert, der mit dem aktuellen Feldwert verglichen werden soll.

## Beispiel (MongoDB Shell)
<a name="max-update-examples"></a>

Das folgende Beispiel zeigt, wie der `$max` Operator verwendet wird, um die höchste aufgezeichnete Punktzahl für einen Spieler zu aktualisieren.

**Erstellen Sie Beispieldokumente**

```
db.scores.insertMany([
  { _id: 1, player: "Alice", highScore: 85 },
  { _id: 2, player: "Bob", highScore: 92 },
  { _id: 3, player: "Charlie", highScore: 78 }
])
```

**Beispiel aktualisieren**

```
db.scores.updateOne(
  { _id: 1 },
  { $max: { highScore: 95 } }
)
```

**Ergebnis**

Das `highScore` Feld für Alice wird auf 95 aktualisiert, weil 95 größer als der aktuelle Wert von 85 ist.

```
{ "_id": 1, "player": "Alice", "highScore": 95 }
```

## Codebeispiele
<a name="max-update-code"></a>

Um ein Codebeispiel für die Verwendung des `$max` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('scores');

  const result = await collection.updateOne(
    { _id: 1 },
    { $max: { highScore: 95 } }
  );

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['scores']

    result = collection.update_one(
        { '_id': 1 },
        { '$max': { 'highScore': 95 } }
    )

    print(result)
    client.close()

example()
```

------

# \$1min
<a name="min-update"></a>

Der `$min` Aktualisierungsoperator aktualisiert den Wert eines Felds nur, wenn der angegebene Wert kleiner als der aktuelle Feldwert ist. Dieser Operator ist nützlich, um Mindestwerte bei Aktualisierungen beizubehalten.

**Parameter**
+ `field`: Das zu aktualisierende Feld.
+ `value`: Der Wert, der mit dem aktuellen Feldwert verglichen werden soll.

## Beispiel (MongoDB Shell)
<a name="min-update-examples"></a>

Das folgende Beispiel zeigt, wie der `$min` Operator verwendet wird, um die niedrigste gemessene Temperatur für eine Wetterstation zu aktualisieren.

**Erstellen Sie Beispieldokumente**

```
db.weather.insertMany([
  { _id: 1, station: "Station A", lowestTemp: 15 },
  { _id: 2, station: "Station B", lowestTemp: 20 },
  { _id: 3, station: "Station C", lowestTemp: 18 }
])
```

**Beispiel aktualisieren**

```
db.weather.updateOne(
  { _id: 1 },
  { $min: { lowestTemp: 12 } }
)
```

**Ergebnis**

Das `lowestTemp` Feld für Station A wird auf 12 aktualisiert, weil 12 kleiner als der aktuelle Wert von 15 ist.

```
{ "_id": 1, "station": "Station A", "lowestTemp": 12 }
```

## Codebeispiele
<a name="min-update-code"></a>

Um ein Codebeispiel für die Verwendung des `$min` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('weather');

  const result = await collection.updateOne(
    { _id: 1 },
    { $min: { lowestTemp: 12 } }
  );

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['weather']

    result = collection.update_one(
        { '_id': 1 },
        { '$min': { 'lowestTemp': 12 } }
    )

    print(result)
    client.close()

example()
```

------

# \$1mul
<a name="mul"></a>

Der `$mul` Operator in Amazon DocumentDB wird verwendet, um den Wert eines Felds mit einer bestimmten Zahl zu multiplizieren. Dies kann nützlich sein, um mehrere Dokumente automatisch und konsistent zu aktualisieren, z. B. um Flugmeilen auf der Grundlage eines Kreditkartenstatus zu aktualisieren.

**Parameter**
+ `field`: Das Feld, das multipliziert werden soll.
+ `multiplier`: Die Zahl, mit der der Feldwert multipliziert werden soll.

## Beispiel (MongoDB Shell)
<a name="mul-examples"></a>

Dieses Beispiel zeigt, wie der `$mul` Operator verwendet wird, um den `flight_miles` Wert für alle Dokumente zu verdoppeln, in denen sich das `credit_card` Feld befindet`true`.

**Erstellen Sie Beispieldokumente**

```
db.miles.insertMany([
  { "_id": 1, "member_since": new Date("1987-01-01"), "credit_card": false, "flight_miles": [1205, 2560, 880] },
  { "_id": 2, "member_since": new Date("1982-01-01"), "credit_card": true, "flight_miles": [2410, 5120, 1780, 5560] },
  { "_id": 3, "member_since": new Date("1999-01-01"), "credit_card": true, "flight_miles": [2410, 1760] }
]);
```

**Beispiel für eine Abfrage**

```
db.miles.update(
  { "credit_card": { "$eq": true } },
  { "$mul": { "flight_miles.$[]": NumberInt(2) } },
  { "multi": true }
);
```

**Ausgabe**

```
{ "_id" : 1, "member_since" : ISODate("1987-01-01T00:00:00Z"), "credit_card" : false, "flight_miles" : [ 1205, 2560, 880 ] }
{ "_id" : 2, "member_since" : ISODate("1982-01-01T00:00:00Z"), "credit_card" : true, "flight_miles" : [ 4820, 10240, 3560, 11120 ] }
{ "_id" : 3, "member_since" : ISODate("1999-01-01T00:00:00Z"), "credit_card" : true, "flight_miles" : [ 4820, 3520 ] }
```

Für Kunden, die eine Kreditkarte besitzen, wurden ihre Flugmeilen verdoppelt.

Der `$[]` Positions-Array-Operator wird verwendet, um die `$mul` Operation auf jedes Element im `flight_miles` Array anzuwenden.

## Codebeispiele
<a name="mul-code"></a>

Um ein Codebeispiel für die Verwendung des `$mul` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function updateFlightMiles() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('miles');

  await collection.updateMany(
    { credit_card: true },
    { $mul: { 'flight_miles.$[]': 2 } }
  );

  const documents = await collection.find().toArray();
  console.log(documents);

  await client.close();
}

updateFlightMiles();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def update_flight_miles():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.miles

    collection.update_many(
        {'credit_card': True},
        {'$mul': {'flight_miles.$[]': 2}}
    )

    documents = list(collection.find())
    print(documents)

    client.close()

update_flight_miles()
```

------

# \$1pop
<a name="pop"></a>

Der `$pop` Operator in Amazon DocumentDB wird verwendet, um das erste oder letzte Element aus einem Array-Feld zu entfernen. Dies ist besonders nützlich, wenn Sie ein Array mit fester Größe verwalten oder eine warteschlangenartige Datenstruktur innerhalb eines Dokuments implementieren müssen.

**Parameter**
+ `field`: Der Name des Array-Felds, aus dem ein Element entfernt werden soll.
+ `value`: Ein ganzzahliger Wert, der die Position des zu entfernenden Elements bestimmt. Ein Wert von `1` entfernt das letzte Element, während ein Wert von das erste Element `-1` entfernt.

## Beispiel (MongoDB Shell)
<a name="pop-examples"></a>

Dieses Beispiel zeigt, wie der `$pop` Operator verwendet wird, um das erste und das letzte Element aus einem Array-Feld zu entfernen.

**Erstellen Sie Beispieldokumente**

```
db.users.insertMany([
  { "_id": 1, "name": "John Doe", "hobbies": ["reading", "swimming", "hiking"] },
  { "_id": 2, "name": "Jane Smith", "hobbies": ["cooking", "gardening", "painting"] }
])
```

**Beispiel für eine Abfrage**

```
// Remove the first element from the "hobbies" array
db.users.update({ "_id": 1 }, { $pop: { "hobbies": -1 } })

// Remove the last element from the "hobbies" array
db.users.update({ "_id": 2 }, { $pop: { "hobbies": 1 } })
```

**Ausgabe**

```
{ "_id" : 1, "name" : "John Doe", "hobbies" : [ "swimming", "hiking" ] }
{ "_id" : 2, "name" : "Jane Smith", "hobbies" : [ "cooking", "gardening" ] }
```

## Codebeispiele
<a name="pop-code"></a>

Um ein Codebeispiel für die Verwendung des `$pop` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('users');

  // Remove the first element from the "hobbies" array
  await collection.updateOne({ "_id": 1 }, { $pop: { "hobbies": -1 } });

  // Remove the last element from the "hobbies" array
  await collection.updateOne({ "_id": 2 }, { $pop: { "hobbies": 1 } });

  const users = await collection.find().toArray();
  console.log(users);

  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['users']

    # Remove the first element from the "hobbies" array
    collection.update_one({"_id": 1}, {"$pop": {"hobbies": -1}})

    # Remove the last element from the "hobbies" array
    collection.update_one({"_id": 2}, {"$pop": {"hobbies": 1}})

    users = list(collection.find())
    print(users)

    client.close()

example()
```

------

# \$1position
<a name="position"></a>

Der `$position` Modifikator in Amazon DocumentDB gibt die Position im Array an, an der der `$push` Operator Elemente einfügt. Ohne den `$position` Modifikator fügt der `$push` Operator Elemente am Ende des Arrays ein.

**Parameter**
+ `field`: Das zu aktualisierende Array-Feld.
+ `num`: Die Position im Array, an der Elemente eingefügt werden sollen, basierend auf einer Nullindizierung.

**Hinweis**: Um den `$position` Modifikator verwenden zu können, muss er zusammen mit dem Modifikator erscheinen. `$each`

## Beispiel (MongoDB Shell)
<a name="position-examples"></a>

Das folgende Beispiel zeigt, wie der `$position` Operator verwendet wird, um Aufgaben an bestimmten Positionen in einem Projektmanagementsystem einzufügen.

**Erstellen Sie Beispieldokumente**

```
db.projects.insertOne({ "_id": 1, "name": "Website Redesign", "tasks": ["Design mockups"] })
```

**Abfragebeispiel 1 — Fügen Sie am Anfang dringende Aufgaben hinzu**

```
db.projects.updateOne(
   { _id: 1 },
   {
     $push: {
        tasks: {
           $each: ["Security audit", "Performance review"],
           $position: 0
        }
     }
   }
)
```

**Ausgang 1**

```
{ "_id": 1, "name": "Website Redesign", "tasks": ["Security audit", "Performance review", "Design mockups"] }
```

**Abfragebeispiel 2 — Aufgaben an einer bestimmten Position hinzufügen**

```
db.projects.insertOne({ "_id": 2, "name": "Mobile App", "tasks": ["Setup project", "Create wireframes", "Deploy to store"] })

db.projects.updateOne(
   { _id: 2 },
   {
     $push: {
        tasks: {
           $each: ["Code review", "Testing phase"],
           $position: 2
        }
     }
   }
)
```

**Ausgabe 2**

```
{ "_id": 2, "name": "Mobile App", "tasks": ["Setup project", "Create wireframes", "Code review", "Testing phase", "Deploy to store"] }
```

## Codebeispiele
<a name="position-code"></a>

Um ein Codebeispiel für die Verwendung des `$position` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function insertTasksAtPosition() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('projects');

  await collection.updateOne(
    { _id: 1 },
    {
      $push: {
        tasks: {
          $each: ["Security audit", "Performance review"],
          $position: 0
        }
      }
    }
  );

  const updatedProject = await collection.findOne({ _id: 1 });
  console.log(updatedProject);

  await client.close();
}

insertTasksAtPosition();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def insert_tasks_at_position():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['projects']

    result = collection.update_one(
        {'_id': 1},
        {
            '$push': {
                'tasks': {
                    '$each': ['Security audit', 'Performance review'],
                    '$position': 0
                }
            }
        }
    )

    updated_project = collection.find_one({'_id': 1})
    print(updated_project)

    client.close()

insert_tasks_at_position()
```

------

# \$1pull
<a name="pull"></a>

Der `$pull` Operator wird verwendet, um alle Instanzen eines Werts oder von Werten, die einer bestimmten Bedingung entsprechen, aus einem Array zu entfernen. Dieser Operator ist nützlich, wenn Sie bestimmte Elemente aus einem Array-Feld innerhalb eines Dokuments entfernen müssen.

**Parameter**
+ `field`: Der Name des Array-Feldes, aus dem die Werte entfernt werden sollen.
+ `value`: Der Wert oder die Bedingung, die bestimmt, welche Elemente aus dem Array entfernt werden sollen.

## Beispiel (MongoDB Shell)
<a name="pull-examples"></a>

Das folgende Beispiel zeigt, wie der `$pull` Operator verwendet wird, um Elemente aus einem Array-Feld zu entfernen.

**Erstellen Sie Beispieldokumente**

```
db.restaurants.insertMany([
  {
    name: "Pizza Hut",
    cuisine: "Italian",
    features: ["Delivery", "Takeout", "Dine-in"]
  },
  {
    name: "Sushi Saito",
    cuisine: "Japanese",
    features: ["Dine-in", "Private Dining"]
  },
  {
    name: "Taco Bell",
    cuisine: "Mexican",
    features: ["Delivery", "Takeout", "Drive-thru"]
  }
])
```

**Beispiel für eine Abfrage**

```
db.restaurants.updateMany(
  { cuisine: "Italian" },
  { $pull: { features: "Takeout" } }
)
```

**Ausgabe**

```
{
  "acknowledged" : true,
  "matchedCount" : 1,
  "modifiedCount" : 1
}
```

Die obige Abfrage entfernt die Funktion „Mitnehmen“ aus allen Dokumenten, in denen das `cuisine` Feld „Italienisch“ ist.

## Codebeispiele
<a name="pull-code"></a>

Um ein Codebeispiel für die Verwendung des `$pull` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function updateRestaurants() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const restaurants = db.collection('restaurants');

  await restaurants.updateMany(
    { cuisine: 'Italian' },
    { $pull: { features: 'Takeout' } }
  );

  const updatedRestaurants = await restaurants.find({}).toArray();
  console.log(updatedRestaurants);

  await client.close();
}

updateRestaurants();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def update_restaurants():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    restaurants = db.restaurants

    result = restaurants.update_many(
        { 'cuisine': 'Italian' },
        { '$pull': { 'features': 'Takeout' } }
    )

    updated_restaurants = list(restaurants.find({}))
    print(updated_restaurants)

    client.close()

update_restaurants()
```

------

# \$1pullAll
<a name="pullAll"></a>

Der `$pullAll` Operator in Amazon DocumentDB wird verwendet, um alle Instanzen der angegebenen Werte aus einem Array-Feld zu entfernen. Dies ist besonders nützlich, wenn Sie in einem einzigen Vorgang mehrere Elemente aus einem Array entfernen müssen.

**Parameter**
+ `field`: Der Name des Array-Feldes, aus dem die Elemente entfernt werden sollen.
+ `value`: Eine Reihe von Werten, die aus dem Array-Feld entfernt werden sollen.

## Beispiel (MongoDB Shell)
<a name="pullAll-examples"></a>

Das folgende Beispiel zeigt, wie der `$pullAll` Operator verwendet wird, um mehrere Elemente aus einem Array-Feld zu entfernen.

**Erstellen Sie Beispieldokumente**

```
db.restaurants.insert([
  {
    "name": "Taj Mahal",
    "cuisine": "Indian",
    "features": ["Private Dining", "Live Music"]
  },
  {
    "name": "Golden Palace",
    "cuisine": "Chinese",
    "features": ["Private Dining", "Takeout"]
  },
  {
    "name": "Olive Garden",
    "cuisine": "Italian",
    "features": ["Private Dining", "Outdoor Seating"]
  }
])
```

**Beispiel für eine Abfrage**

```
db.restaurants.update(
  { "name": "Taj Mahal" },
  { $pullAll: { "features": ["Private Dining", "Live Music"] } }
)
```

**Ausgabe**

```
{
  "name": "Taj Mahal",
  "cuisine": "Indian",
  "features": []
}
```

## Codebeispiele
<a name="pullAll-code"></a>

Um ein Codebeispiel für die Verwendung des `$pullAll` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function main() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('restaurants');

  await collection.updateMany(
    { "name": "Taj Mahal" },
    { $pullAll: { "features": ["Private Dining", "Live Music"] } }
  );

  const updatedDocument = await collection.findOne({ "name": "Taj Mahal" });
  console.log(updatedDocument);

  await client.close();
}

main();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def main():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['restaurants']

    collection.update_many(
        {"name": "Taj Mahal"},
        {"$pullAll": {"features": ["Private Dining", "Live Music"]}}
    )

    updated_document = collection.find_one({"name": "Taj Mahal"})
    print(updated_document)

    client.close()

if __name__ == '__main__':
    main()
```

------

# \$1push
<a name="push"></a>

Der `$push` Operator in Amazon DocumentDB wird verwendet, um ein Element zu einem Array-Feld in einem Dokument hinzuzufügen. Dieser Operator ist besonders nützlich, wenn Sie neue Daten an ein vorhandenes Array anhängen müssen, ohne das gesamte Array zu überschreiben.

**Parameter**
+ `field`: Der Name des Array-Feldes, zu dem das neue Element hinzugefügt werden soll.
+ `value`: Der Wert, der dem Array hinzugefügt werden soll.
+ `position`: (optional) Ein Modifikator, der die Position im Array angibt, an der das neue Element hinzugefügt werden soll. Zu den unterstützten Modifikatoren gehören `$` (am Ende des Arrays hinzufügen) und `$[]` (am Ende des Arrays hinzufügen, dabei alle Array-Filter ignorieren).

## Beispiel (MongoDB Shell)
<a name="push-examples"></a>

Das folgende Beispiel zeigt, wie der `$push` Operator verwendet wird, um einem Array-Feld in einem Dokument neue Elemente hinzuzufügen.

**Erstellen Sie Beispieldokumente**

```
db.users.insert([
  { _id: 1, name: "John Doe", hobbies: ["reading", "swimming"] },
  { _id: 2, name: "Jane Smith", hobbies: ["gardening", "cooking"] }
])
```

**Beispiel für eine Abfrage**

```
db.users.updateOne(
  { _id: 1 },
  { $push: { hobbies: "hiking" } }
)
```

**Ausgabe**

```
{
  "acknowledged" : true,
  "matchedCount" : 1,
  "modifiedCount" : 1
}
```

Nach dem Ausführen des Updates `_id: 1` wird das `hobbies` Array für das Dokument mit aktualisiert`[&quot;reading&quot;, &quot;swimming&quot;, &quot;hiking&quot;]`.

## Codebeispiele
<a name="push-code"></a>

Um ein Codebeispiel für die Verwendung des `$push` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function updateDocument() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('users');

  const result = await collection.updateOne(
    { _id: 1 },
    { $push: { hobbies: "hiking" } }
  );

  console.log(result);
  client.close();
}

updateDocument();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def update_document():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['users']

    result = collection.update_one(
        {'_id': 1},
        {'$push': {'hobbies': 'hiking'}}
    )

    print(result.raw_result)
    client.close()

update_document()
```

------

# \$1rename
<a name="rename"></a>

Der `$rename` Operator in Amazon DocumentDB wird verwendet, um ein Feld in einem Dokument umzubenennen. Dieser Operator kann besonders nützlich sein, wenn Sie die Struktur Ihrer Dokumente aktualisieren oder sie an neue Datenmodelle anpassen müssen.

**Parameter**
+ `field`: Das Feld, das umbenannt werden soll.
+ `newName`: Der neue Name für das Feld.

## Beispiel (MongoDB Shell)
<a name="rename-examples"></a>

Das folgende Beispiel zeigt, wie Sie den `$rename` Operator verwenden, um das `&quot;Date.DoW&quot;` Feld `&quot;Date.DayOfWeek&quot;` in einem Dokument umzubenennen, in dem das `&quot;DocName&quot;` Feld auf `&quot;Document 1&quot;` gesetzt ist.

**Erstellen Sie Beispieldokumente**

```
db.example.insertOne({
    "DocName": "Document 1",
    "Date": {
        "Month": 4,
        "Day": 18,
        "Year": 1987,
        "DoW": "Saturday"
    },
    "Words": 2482
})
```

**Beispiel für eine Abfrage**

```
db.example.update(
    { "DocName": "Document 1" },
    { $rename: { "Date.DoW": "Date.DayOfWeek" } }
)
```

**Ausgabe**

```
{
    "DocName": "Document 1",
    "Date": {
        "Month": 4,
        "Day": 18,
        "Year": 1987,
        "DayOfWeek": "Saturday"
    },
    "Words": 2482
}
```

## Codebeispiele
<a name="rename-code"></a>

Um ein Codebeispiel für die Verwendung des `$rename` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
    const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
    const db = client.db('test');
    const collection = db.collection('example');

    await collection.updateOne(
        { "DocName": "Document 1" },
        { $rename: { "Date.DoW": "Date.DayOfWeek" } }
    );

    const updatedDoc = await collection.findOne({ "DocName": "Document 1" });
    console.log(updatedDoc);

    await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['example']

    collection.update_one(
        {"DocName": "Document 1"},
        {"$rename": {"Date.DoW": "Date.DayOfWeek"}}
    )

    updated_doc = collection.find_one({"DocName": "Document 1"})
    print(updated_doc)

    client.close()

example()
```

------

# \$1set
<a name="set-update"></a>

Der `$set` Operator in Amazon DocumentDB wird verwendet, um den Wert eines bestimmten Felds in einem Dokument zu aktualisieren. Mit diesem Operator können Sie neue Felder hinzufügen oder bestehende Felder innerhalb eines Dokuments ändern. Es ist ein grundlegender Aktualisierungsoperator im MongoDB-Java-Treiber, der mit Amazon DocumentDB kompatibel ist.

**Parameter**
+ `field`: Das zu aktualisierende Feld.
+ `value`: Der neue Wert für das Feld.

## Beispiel (MongoDB Shell)
<a name="set-examples"></a>

Das folgende Beispiel zeigt, wie der `$set` Operator verwendet wird, um das `Item` Feld in einem Dokument zu aktualisieren.

**Erstellen Sie Beispieldokumente**

```
db.example.insert([
  {
    "Item": "Pen",
    "Colors": ["Red", "Green", "Blue", "Black"],
    "Inventory": {
      "OnHand": 244,
      "MinOnHand": 72
    }
  },
  {
    "Item": "Poster Paint",
    "Colors": ["Red", "Green", "Blue", "White"],
    "Inventory": {
      "OnHand": 120,
      "MinOnHand": 36
    }
  }
])
```

**Beispiel für eine Abfrage**

```
db.example.update(
  { "Item": "Pen" },
  { $set: { "Item": "Gel Pen" } }
)
```

**Ausgabe**

```
{
  "Item": "Gel Pen",
  "Colors": ["Red", "Green", "Blue", "Black"],
  "Inventory": {
    "OnHand": 244,
    "MinOnHand": 72
  }
}
```

## Codebeispiele
<a name="set-code"></a>

Um ein Codebeispiel für die Verwendung des `$set` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function updateDocument() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('example');

  await collection.updateOne(
    { "Item": "Pen" },
    { $set: { "Item": "Gel Pen" } }
  );

  const updatedDocument = await collection.findOne({ "Item": "Gel Pen" });
  console.log(updatedDocument);

  await client.close();
}

updateDocument();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def update_document():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.example

    collection.update_one(
        {"Item": "Pen"},
        {"$set": {"Item": "Gel Pen"}}
    )

    updated_document = collection.find_one({"Item": "Gel Pen"})
    print(updated_document)

    client.close()

update_document()
```

------

# \$1setOnInsert
<a name="setOnInsert"></a>

Der `$setOnInsert` Operator in Amazon DocumentDB wird verwendet, um den Wert eines Felds festzulegen, wenn ein Dokument eingefügt wird. Er hat jedoch keine Auswirkung, wenn das Dokument aktualisiert wird.

**Parameter**
+ `field`: Das Feld, das festgelegt werden soll.
+ `value`: Der Wert, der dem Feld zugewiesen werden soll.

## Beispiel (MongoDB Shell)
<a name="setOnInsert-examples"></a>

Das folgende Beispiel zeigt die Verwendung des `$setOnInsert` Operators in Amazon DocumentDB. Es erstellt ein neues Dokument, wenn das Dokument noch nicht existiert, hat aber keine Auswirkung, wenn das Dokument aktualisiert wird.

**Erstellen Sie Beispieldokumente**

```
db.users.insertOne({
  _id: 1,
  name: "John Doe",
  age: 30
})
```

**Abfragebeispiel 1 — Bestehendes Dokument aktualisieren**

```
db.users.update(
  { _id: 1 },
  {
    $set: { age: 31 },
    $setOnInsert: { createdAt: new Date() }
  },
  { upsert: true }
)
```

**Ausgabe 1**

```
{
  _id: 1,
  name: "John Doe",
  age: 31
}
```

Die Ausgabe zeigt, dass das Dokument aktualisiert wurde, das `createdAt` Feld jedoch **NICHT hinzugefügt** wurde, da das Dokument bereits vorhanden war. Der `$setOnInsert` Operator gilt nur beim Einfügen neuer Dokumente.

**Abfragebeispiel 2 — Neues Dokument einfügen (upsert)**

```
db.users.update(
  { _id: 2 },
  {
    $set: { name: "Jane Smith", age: 25 },
    $setOnInsert: { createdAt: new Date() }
  },
  { upsert: true }
)
```

**Ausgabe 2**

```
{
  _id: 2,
  name: "Jane Smith", 
  age: 25,
  createdAt: ISODate("2025-10-31T09:57:52.459Z")
}
}
```

## Codebeispiele
<a name="setOnInsert-code"></a>

Um ein Codebeispiel für die Verwendung des `$setOnInsert` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function updateWithSetOnInsert() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const users = db.collection('users');

  await users.updateOne(
    { _id: 1 },
    {
      $set: { age: 31 },
      $setOnInsert: { createdAt: new Date() }
    },
    { upsert: true }
  );

  const updatedUser = await users.findOne({ _id: 1 });
  console.log(updatedUser);

  await client.close();
}

updateWithSetOnInsert();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def update_with_set_on_insert():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    users = db['users']

    result = users.update_one(
        {'_id': 1},
        {
            '$set': {'age': 31},
            '$setOnInsert': {'createdAt': datetime.datetime.now()}
        },
        upsert=True
    )

    updated_user = users.find_one({'_id': 1})
    print(updated_user)

    client.close()

update_with_set_on_insert()
```

------

# \$1slice
<a name="slice-update"></a>

Der `$slice` Aktualisierungsoperator ändert ein Array, indem er seine Größe begrenzt. Wenn er zusammen mit dem `$push` Operator verwendet wird, schränkt er die Anzahl der Elemente in einem Array ein und behält nur die angegebene Anzahl der neuesten oder ältesten Elemente bei.

**Parameter**
+ `field`: Das zu ändernde Array-Feld.
+ `count`: Maximale Anzahl von Elementen, die beibehalten werden sollen. Positive Werte behalten die ersten N Elemente, negative Werte behalten die letzten N Elemente.

## Beispiel (MongoDB Shell)
<a name="slice-update-examples"></a>

Das folgende Beispiel zeigt, wie der `$slice` Aktualisierungsoperator with verwendet wird`$push`, um ein Array mit fester Größe mit aktuellen Ergebnissen zu verwalten.

**Erstellen Sie Beispieldokumente**

```
db.students.insertOne({
  _id: 1,
  name: "Alice",
  scores: [85, 90, 78]
});
```

**Beispiel für eine Abfrage**

```
db.students.updateOne(
  { _id: 1 },
  {
    $push: {
      scores: {
        $each: [92, 88],
        $slice: -3
      }
    }
  }
)
```

**Ausgabe**

```
{
  "_id" : 1,
  "name" : "Alice",
  "scores" : [ 78, 92, 88 ]
}
```

In diesem Beispiel behält der `$slice: -3` Modifikator nur die letzten drei Elemente bei, nachdem er neue Werte in das Array übertragen hat.

## Codebeispiele
<a name="slice-update-code"></a>

Um ein Codebeispiel für die Verwendung des `$slice` Aktualisierungsoperators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function updateDocument() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('students');

  await collection.updateOne(
    { _id: 1 },
    {
      $push: {
        scores: {
          $each: [92, 88],
          $slice: -3
        }
      }
    }
  );

  const updatedDocument = await collection.findOne({ _id: 1 });
  console.log(updatedDocument);

  await client.close();
}

updateDocument();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def update_document():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.students

    collection.update_one(
        {'_id': 1},
        {
            '$push': {
                'scores': {
                    '$each': [92, 88],
                    '$slice': -3
                }
            }
        }
    )

    updated_document = collection.find_one({'_id': 1})
    print(updated_document)

    client.close()

update_document()
```

------

# \$1sort
<a name="sort-update"></a>

Der `$sort` Aktualisierungsmodifikator ordnet Array-Elemente an, wenn er zusammen mit dem `$push` Operator verwendet wird. Er ordnet Array-Elemente auf der Grundlage der angegebenen Feldwerte oder der Elemente selbst in aufsteigender oder absteigender Reihenfolge an.

**Parameter**
+ `field`: Das zu ändernde Array-Feld.
+ `order`: Wird `1` für aufsteigende oder `-1` absteigende Reihenfolge verwendet.

## Beispiel (MongoDB Shell)
<a name="sort-update-examples"></a>

Das folgende Beispiel zeigt, wie der `$sort` Modifikator mit verwendet wird`$push`, um neue Quizergebnisse hinzuzufügen und sie in absteigender Reihenfolge zu sortieren.

**Erstellen Sie Beispieldokumente**

```
db.students.insertOne({
  _id: 1,
  name: "Bob",
  quizzes: [
    { score: 85, date: "2024-01-15" },
    { score: 92, date: "2024-02-10" }
  ]
});
```

**Beispiel für eine Abfrage**

```
db.students.updateOne(
  { _id: 1 },
  {
    $push: {
      quizzes: {
        $each: [{ score: 78, date: "2024-03-05" }],
        $sort: { score: -1 }
      }
    }
  }
)
```

**Ausgabe**

```
{
  "_id" : 1,
  "name" : "Bob",
  "quizzes" : [
    { "score" : 92, "date" : "2024-02-10" },
    { "score" : 85, "date" : "2024-01-15" },
    { "score" : 78, "date" : "2024-03-05" }
  ]
}
```

## Codebeispiele
<a name="sort-update-code"></a>

Um ein Codebeispiel für die Verwendung des `$sort` Aktualisierungsmodifikators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function updateDocument() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('students');

  await collection.updateOne(
    { _id: 1 },
    {
      $push: {
        quizzes: {
          $each: [{ score: 78, date: "2024-03-05" }],
          $sort: { score: -1 }
        }
      }
    }
  );

  const updatedDocument = await collection.findOne({ _id: 1 });
  console.log(updatedDocument);

  await client.close();
}

updateDocument();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def update_document():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    collection = db.students

    collection.update_one(
        {'_id': 1},
        {
            '$push': {
                'quizzes': {
                    '$each': [{'score': 78, 'date': '2024-03-05'}],
                    '$sort': {'score': -1}
                }
            }
        }
    )

    updated_document = collection.find_one({'_id': 1})
    print(updated_document)

    client.close()

update_document()
```

------

# \$1unset
<a name="unset-update"></a>

Der `$unset` Operator in Amazon DocumentDB wird verwendet, um ein bestimmtes Feld aus einem Dokument zu entfernen. Wenn ein Feld mit entfernt wird`$unset`, wird das Feld aus dem Dokument gelöscht, und die Dokumentgröße wird entsprechend reduziert. Dies kann nützlich sein, wenn Sie unnötige Daten aus Ihren Dokumenten entfernen möchten.

**Parameter**
+ `field`: Das Feld, das aus dem Dokument entfernt werden soll. Dies kann ein einzelnes Feld oder ein gepunkteter Pfad zu einem verschachtelten Feld sein.

## Beispiel (MongoDB Shell)
<a name="unset-examples"></a>

Das folgende Beispiel zeigt, wie der `$unset` Operator verwendet wird, um das `Words` Feld aus einem Dokument in der `example` Sammlung zu entfernen.

**Erstellen Sie Beispieldokumente**

```
db.example.insert({
    "DocName": "Document 1",
    "Date": {
        "Month": 4,
        "Day": 18,
        "Year": 1987,
        "DoW": "Saturday"
    },
    "Words": 2482
})
```

**Beispiel für eine Abfrage**

```
db.example.update(
    { "DocName" : "Document 1" },
    { $unset: { Words:1 } }
)
```

**Ausgabe**

```
{
    "DocName": "Document 1",
    "Date": {
        "Month": 4,
        "Day": 18,
        "Year": 1987,
        "DoW": "Saturday"
    }
}
```

In diesem Beispiel wird der `$unset` Operator verwendet, um das `Words` Feld aus dem Dokument zu entfernen, das „Dokument 1" `DocName` entspricht. Das resultierende Dokument enthält das `Words` Feld nicht mehr.

## Codebeispiele
<a name="unset-code"></a>

Um ein Codebeispiel für die Verwendung des `$unset` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function removeField() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('example');

  const result = await collection.updateOne(
    { "DocName": "Document 1" },
    { $unset: { "Words": 1 } }
  );

  console.log(`Modified ${result.modifiedCount} document(s)`);
  client.close();
}

removeField();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def remove_field():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['example']

    result = collection.update_one(
        {"DocName": "Document 1"},
        {"$unset": {"Words": 1}}
    )

    print(f"Modified {result.modified_count} document(s)")
    client.close()

remove_field()
```

------