Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Fasen $documents för aggregeringspipeline används för att skapa en pipeline från en uppsättning angivna dokument. Det här steget är särskilt användbart när du vill bearbeta specifika dokument utan att köra frågor mot en samling.
Syntax
{
$documents: [
<document1>,
<document2>,
...
]
}
Parameterar
| Parameter | Description |
|---|---|
<document> |
Ett JSON-objekt som representerar ett dokument som ska inkluderas i pipelinen. |
Examples
Överväg det här exempeldokumentet från butiksamlingen.
{
"_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
}
]
}
]
}
Exempel 1: Skapa en pipeline från specifika dokument
Den här frågan visar hur du använder $documents fasen för att bearbeta en uppsättning fördefinierade dokument:
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"
}
}])
Den här frågan returnerar följande resultat:
[
{
"_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"
]
}
]
Exempel 2: Kombinera $documents med andra pipelinesteg
Den här frågan kombinerar $documents pipelinesteg tillsammans med $match och $sort pipelinesteg.
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
}
}])
Den här frågan returnerar följande resultat:
[
{
"_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" ]
}
]
Begränsningar
- Den $documents fasen stöds endast i sammansättningspipelines på databasnivå.
- Det måste vara det första steget i pipelinen för att fungera korrekt.