Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die $redact Phase in der Aggregationspipeline wird verwendet, um Felder der Dokumente in einer Auflistung dynamisch basierend auf Zugriffsrechten oder anderen Bedingungen zu filtern. Es verarbeitet jedes Dokument in der Pipeline und entfernt oder behält Felder bei, basierend auf der angegebenen Logik.
Syntax
{
$redact: <expression>
}
Die Parameter
| Parameter | Description |
|---|---|
<expression> |
Ein gültiger MongoDB-Ausdruck, der zu einem der folgenden Werte ausgewertet wird: $$DESCEND, , $$PRUNE, oder $$KEEP. Diese Variablen bestimmen, ob das Dokument beibehalten, entfernt oder tiefer untersucht werden soll. |
Examples
Betrachten Sie dieses Beispieldokument aus der Stores-Sammlung.
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
"location": {
"lat": -89.2384,
"lon": -46.4012
},
"staff": {
"totalStaff": {
"fullTime": 8,
"partTime": 20
}
},
"sales": {
"totalSales": 75670,
"salesByCategory": [
{
"categoryName": "Wine Accessories",
"totalSales": 34440
},
{
"categoryName": "Bitters",
"totalSales": 39496
},
{
"categoryName": "Rum",
"totalSales": 1734
}
]
},
"promotionEvents": [
{
"eventName": "Unbeatable Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 7,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Whiskey",
"discountPercentage": 7
},
{
"categoryName": "Bitters",
"discountPercentage": 15
},
{
"categoryName": "Brandy",
"discountPercentage": 8
},
{
"categoryName": "Sports Drinks",
"discountPercentage": 22
},
{
"categoryName": "Vodka",
"discountPercentage": 19
}
]
},
{
"eventName": "Steal of a Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 29
}
},
"discounts": [
{
"categoryName": "Organic Wine",
"discountPercentage": 19
},
{
"categoryName": "White Wine",
"discountPercentage": 20
},
{
"categoryName": "Sparkling Wine",
"discountPercentage": 19
},
{
"categoryName": "Whiskey",
"discountPercentage": 17
},
{
"categoryName": "Vodka",
"discountPercentage": 23
}
]
}
]
}
Beispiel 1: Schwärzen vertraulicher Informationen
Diese Abfrage filtert das promotionEvents Feld nach Dokumenten, bei denen die discountPercentage In-Heraufstellung 15%überschreitet.
db.stores.aggregate([
{
$redact: {
$cond: {
if: {
$gt: ["$promotionEvents.discounts.discountPercentage", 15]
},
then: "$$PRUNE",
else: "$$DESCEND"
}
}
}
])
Die ersten beiden Ergebnisse, die von dieser Abfrage zurückgegeben werden, sind:
[
{
"_id": "new-store-001",
"name": "Adatum Corporation - Downtown Branch",
"sales": {
"totalSales": 5000
},
"createdDate": "2025-06-11T11:11:32.262Z",
"status": "new",
"staff": {
"totalStaff": {
"fullTime": 0,
"partTime": 0
}
},
"version": 1,
"storeOpeningDate": "2025-06-11T11:11:32.262Z",
"storeFeatures": 213
},
{
"_id": "gaming-store-mall-001",
"name": "Trey Research | Gaming Paradise - Mall Location",
"location": {
"lat": 35.6762,
"lon": 139.6503
},
"createdDate": "2025-06-11T11:13:27.180Z",
"status": "active",
"staff": {
"totalStaff": {
"fullTime": 8,
"partTime": 12
},
"manager": "Alex Johnson",
"departments": [
"gaming",
"accessories",
"repairs"
]
},
"sales": {
"totalSales": 0,
"salesByCategory": []
},
"operatingHours": {
"weekdays": "10:00-22:00",
"weekends": "09:00-23:00"
},
"metadata": {
"version": 1,
"source": "store-management-system"
},
"storeOpeningDate": "2025-06-11T11:11:32.262Z",
"storeFeatures": 189
}
]
Beispiel 2: Einschränken des Zugriffs basierend auf Tags
Diese Abfrage entfernt alle Dokumente, die das Tag #MembershipDealsenthalten.
db.stores.aggregate([
{
$redact: {
$cond: {
if: {
$in: ["#MembershipDeals", "$tag"]
},
then: "$$PRUNE",
else: "$$DESCEND"
}
}
}
])