Dela via


$sortArray (matrisuttryck)

GÄLLER FÖR: MongoDB vCore

Operatorn $sortArray används för att sortera elementen i en matris. Den här operatorn kan vara särskilt användbar när du behöver sortera matriser i dina dokument baserat på specifika fält eller kriterier. Den kan tillämpas på matriser med inbäddade dokument eller enkla matriser med värden.

Syntax

Syntaxen för operatorn $sortArray är följande:

{
  $sortArray: {
    input: <arrayExpression>,
    sortBy: <sortSpecification>
  }
}

Parametrar

beskrivning
input Matrisen som ska sorteras.
sortBy Anger sorteringsordningen. Detta kan vara ett enda fält eller flera fält med motsvarande sorteringsordning (1 för stigande, -1 för fallande).

Exempel

Nu ska vi förstå användningen med exempel-json från stores datauppsättningen.

{
  "_id": "d3c9df51-41bd-4b4e-a26b-b038d9cf8b45",
  "location": {
    "lat": -67.7571,
    "lon": 97.2505
  },
  "sales": {
    "totalSales": 149849,
    "salesByCategory": [
      {
        "categoryName": "DJ Speakers",
        "totalSales": 36972
      },
      {
        "categoryName": "DJ Headphones",
        "totalSales": 12877
      },
      {
        "categoryName": "Music Accessories",
        "totalSales": 40000
      },
      {
        "categoryName": "DJ Accessories",
        "totalSales": 60000
      }
    ]
  },
  "tag": [
    "#ShopLocal",
    "#FashionStore",
    "#SeasonalSale",
    "#FreeShipping",
    "#MembershipDeals"
  ]
}

Exempel 1: Sortera en matris med inbäddade dokument

Exempelfrågan sorterar matrisen sales.salesByCategory i varje dokument i fallande ordning baserat på totalSales.

db.stores.aggregate([
  {$match: {"_id": "d3c9df51-41bd-4b4e-a26b-b038d9cf8b45"} }
, {
    $project: {
      sortedSalesByCategory: {
        $sortArray: {
          input: "$sales.salesByCategory",
          sortBy: { totalSales: -1 }
        }
      }
    }
  }
])

Frågan returnerar matriselement sorterade totalSales efter för exempel-json.

{
  "_id": "d3c9df51-41bd-4b4e-a26b-b038d9cf8b45",
  "sortedSalesByCategory": [
    { "categoryName": "DJ Accessories", "totalSales": 60000 },
    { "categoryName": "Music Accessories", "totalSales": 40000 },
    { "categoryName": "DJ Speakers", "totalSales": 36972 },
    { "categoryName": "DJ Headphones", "totalSales": 12877 }
  ]
}

– Granska alternativen för migrering från MongoDB till Azure Cosmos DB for MongoDB (vCore) – Läs mer om funktionskompatibilitet med MongoDB.