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 Aggregationspipelinestufe $documents wird verwendet, um eine Pipeline aus einer Reihe von bereitgestellten Dokumenten zu erstellen. Diese Phase ist besonders hilfreich, wenn Sie bestimmte Dokumente verarbeiten möchten, ohne eine Sammlung abzufragen.
Syntax
{
$documents: [
<document1>,
<document2>,
...
]
}
Die Parameter
| Parameter | Description |
|---|---|
<document> |
Ein JSON-Objekt, das ein Dokument darstellt, das in die Pipeline aufgenommen 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: Erstellen einer Pipeline aus bestimmten Dokumenten
Diese Abfrage veranschaulicht, wie Sie die $documents Phase verwenden, um eine Reihe vordefinierter Dokumente zu verarbeiten:
db.aggregate([{
$documents: [{
_id: "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
name: "Lakeshore Retail | Holiday Supply Hub - Marvinfort",
location: {
lat: 60.1441,
lon: -141.5012
},
sales: {
fullSales: 3700
},
tag: ["#ShopLocal", "#SeasonalSale"]
}, {
_id: "7e53ca0f-6e24-4177-966c-fe62a11e9af5",
name: "Contoso, Ltd. | Office Supply Deals - South Shana",
location: {
lat: 40.7128,
lon: -74.0060
},
sales: {
fullSales: 5400
},
tag: ["#TechDeals", "#FreeShipping"]
}]
}, {
$project: {
_id: 1,
name: 1,
"location.lat": 1,
"location.lon": 1,
"sales.fullSales": 1,
tags: "$tag"
}
}])
Diese Abfrage gibt die folgenden Ergebnisse zurück:
[
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"name": "Lakeshore Retail | Holiday Supply Hub - Marvinfort",
"location": {
"lat": 60.1441,
"lon": -141.5012
},
"sales": {
"fullSales": 3700
},
"tags": [
"#ShopLocal",
"#SeasonalSale"
]
},
{
"_id": "7e53ca0f-6e24-4177-966c-fe62a11e9af5",
"name": "Contoso, Ltd. | Office Supply Deals - South Shana",
"location": {
"lat": 40.7128,
"lon": -74.006
},
"sales": {
"fullSales": 5400
},
"tags": [
"#TechDeals",
"#FreeShipping"
]
}
]
Beispiel 2: Kombinieren $documents mit anderen Pipelinephasen
Diese Abfrage kombiniert die $documents Pipelinephase zusammen mit den $match und $sort Pipelinephasen.
db.aggregate([{
$documents: [{
_id: "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
name: "Lakeshore Retail | Holiday Supply Hub - Marvinfort",
location: {
lat: 60.1441,
lon: -141.5012
},
sales: {
fullSales: 3700
},
tag: ["#ShopLocal", "#SeasonalSale"]
}, {
_id: "7e53ca0f-6e24-4177-966c-fe62a11e9af5",
name: "Contoso, Ltd. | Office Supply Deals - South Shana",
location: {
lat: 40.7128,
lon: -74.0060
},
sales: {
fullSales: 5400
},
tag: ["#TechDeals", "#FreeShipping"]
}]
}, {
$match: {
"sales.fullSales": {
$gt: 4000
}
}
}, {
$sort: {
"sales.fullSales": -1
}
}])
Diese Abfrage gibt das folgende Ergebnis zurück:
[
{
"_id": "7e53ca0f-6e24-4177-966c-fe62a11e9af5",
"name": "Contoso, Ltd. | Office Supply Deals - South Shana",
"location": { "lat": 40.7128, "lon": -74.006 },
"sales": { "fullSales": 5400 },
"tag": [ "#TechDeals", "#FreeShipping" ]
}
]
Einschränkungen
- Die $documents Phase wird nur in Aggregationspipelines auf Datenbankebene unterstützt.
- Es muss die erste Phase in der Pipeline sein, damit sie ordnungsgemäß funktioniert.