Dela via


$documents (sammansättning)

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 Beskrivning
<document> Ett JSON-objekt som representerar ett dokument som ska inkluderas i pipelinen.

Exempel

Exempel 1: Skapa en pipeline från specifika dokument

I följande exempel visas 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"  // renames "tag" to "tags"
    }
  }
]);

Den här frågan returnerar följande dokument.

[
  {
    _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

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 dokument.

[
  {
    _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.