$$DESCEND - Amazon DocumentDB

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.

$$DESCEND

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)

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

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()