Dela via


ORDER BY (NoSQL-fråga)

GÄLLER FÖR: NoSQL

Den valfria ORDER BY satsen anger sorteringsordningen för resultat som returneras av frågan.

Syntax

ORDER BY <sort_specification>  
<sort_specification> ::= <sort_expression> [, <sort_expression>]  
<sort_expression> ::= {<scalar_expression> [ASC | DESC]} [ ,...n ]

Argument

Description
<sort_specification> Anger en egenskap eller ett uttryck som frågeresultatuppsättningen ska sorteras på. En sorteringskolumn kan anges som ett namn eller egenskapsalias. Flera egenskaper kan anges. Egenskapsnamn måste vara unika. Sekvensen för sorteringsegenskaperna ORDER BY i -satsen definierar organisationen för den sorterade resultatuppsättningen. Det innebär att resultatuppsättningen sorteras efter den första egenskapen och sedan sorteras den ordnade listan efter den andra egenskapen och så vidare. Egenskapsnamnen ORDER BY som refereras i -satsen måste motsvara antingen en egenskap i urvalslistan eller till en egenskap som definierats i samlingen som anges i FROM -satsen utan tvetydigheter.
<sort_expression> Anger en eller flera egenskaper eller uttryck som frågeresultatuppsättningen ska sorteras på.
<scalar_expression> Uttryck som representerar det värde som ska beräknas.
ASC Eller DESC Anger att värdena i den angivna kolumnen ska sorteras i stigande eller fallande ordning. ASC sorterar från det lägsta värdet till det högsta värdet. DESC sorterar från högsta till lägsta värde. Om det här argumentet inte anges ASC är (stigande) standardsorteringsordningen. null värden behandlas som de lägsta möjliga värdena.

Anteckning

Mer information om skalära uttryck finns i skalära uttryck

Exempel

För exemplen i det här avsnittet används den här referensuppsättningen med objekt. Varje objekt innehåller en name egenskap med first och last underegenskaper.

[
  {
    "name": {
      "first": "Casey",
      "last": "Jensen"
    },
    "team": "Human resources"
  },
  {
    "name": {
      "first": "Amari",
      "last": "Rivera"
    },
    "team": "Human resources"
  },
  {
    "name": {
      "first": "Kayla",
      "last": "Lewis"
    },
    "team": "Human resources"
  }
]

I det första exemplet ORDER BY används -satsen för att sortera ett fält efter standardsorteringsordningen, stigande.

SELECT VALUE {
    firstName: e.name.first,
    lastName: e.name.last
}
FROM
    employees e
ORDER BY
    e.name.last
[
  {
    "firstName": "Casey",
    "lastName": "Jensen"
  },
  {
    "firstName": "Kayla",
    "lastName": "Lewis"
  },
  {
    "firstName": "Amari",
    "lastName": "Rivera"
  }
]

I nästa exempel anges sorteringsordningen uttryckligen som fallande.

SELECT VALUE {
    firstName: e.name.first,
    lastName: e.name.last
}
FROM
    employees e
ORDER BY
    e.name.last DESC
[
  {
    "firstName": "Amari",
    "lastName": "Rivera"
  },
  {
    "firstName": "Kayla",
    "lastName": "Lewis"
  },
  {
    "firstName": "Casey",
    "lastName": "Jensen"
  }
]

I det här sista exemplet sorteras objekten med två fält, i en specifik ordning med hjälp av uttryckligen angiven ordning. En fråga som sorterar med två eller flera fält kräver ett sammansatt index.

SELECT VALUE {
    firstName: e.name.first,
    lastName: e.name.last
}
FROM
    employees e
ORDER BY
    e.name.last DESC,
    e.name.first ASC

Kommentarer

  • Frågor med ORDER BY returnerar alla objekt, inklusive objekt där egenskapen i ORDER BY-satsen inte har definierats. Vanligtvis kan du inte styra ordningen som olika undefined typer visas i resultatet. Om du vill kontrollera sorteringsordningen för odefinierade värden tilldelar du alla undefined egenskaper ett godtyckligt värde för att säkerställa att de sorterar antingen före eller efter de definierade värdena.
  • Satsen ORDER BY kräver att indexeringsprincipen innehåller ett index för de fält som sorteras. Frågekörningen stöder sortering mot ett egenskapsnamn eller beräknade egenskaper. Körningen stöder också flera ORDER BY egenskaper. För att köra en fråga med flera ORDER BY egenskaper definierar du ett sammansatt index för de fält som sorteras.
  • Om egenskaperna som sorteras kan vara undefined för vissa objekt och du vill hämta dem i en ORDER BY fråga måste du uttryckligen inkludera den här sökvägen i indexet. Standardindexeringsprincipen tillåter inte hämtning av objekt där sorteringsegenskapen är undefined.