Dans MongoDB, le $reverseArray
l'opérateur de pipeline d'agrégation inverse l'ordre des éléments dans un tableau.
Il accepte une expression de tableau comme argument et renvoie un tableau avec les éléments dans l'ordre inverse.
Exemple
Supposons que nous ayons une collection appelée products
avec les documents suivants :
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "L" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "XS", "S", "L", "XL" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "M", "L" ] }
Nous pouvons utiliser le $reverseArray
opérateur pour inverser l'ordre de ces éléments de tableau.
Exemple :
db.products.aggregate(
[
{ $match: { _id: { $in: [ 1, 2, 3 ] } } },
{
$project:
{
_id: 0,
sizes: 1,
reversed: { $reverseArray: [ "$sizes" ] }
}
}
]
)
Résultat :
{ "sizes" : [ "S", "M", "L" ], "reversed" : [ "L", "M", "S" ] } { "sizes" : [ "XS", "S", "L", "XL" ], "reversed" : [ "XL", "L", "S", "XS" ] } { "sizes" : [ "M", "L" ], "reversed" : [ "L", "M" ] }
Tableaux vides
Passer un tableau vide renvoie un tableau vide.
Exemple de document :
{ "_id" : 4, "prod" : "Zap", "sizes" : [ ] }
Appliquer $reverseArray
:
db.products.aggregate(
[
{ $match: { _id: { $in: [ 4 ] } } },
{
$project:
{
_id: 0,
sizes: 1,
reversed: { $reverseArray: [ "$sizes" ] }
}
}
]
)
Résultat :
{ "sizes" : [ ], "reversed" : [ ] }
Valeurs nulles
Passer une valeur de null
renvoie null
.
Exemple de document :
{ "_id" : 5, "prod" : "Tap", "sizes" : null }
Appliquer $reverseArray
:
db.products.aggregate(
[
{ $match: { _id: { $in: [ 5 ] } } },
{
$project:
{
_id: 0,
sizes: 1,
reversed: { $reverseArray: [ "$sizes" ] }
}
}
]
)
Résultat :
{ "sizes" : null, "reversed" : null }
Champs manquants
Application de $reverseArray
à un champ qui n'existe pas dans le document donne null
être retourné.
Exemple de document :
{ "_id" : 6, "prod" : "Map" }
Appliquer $reverseArray
:
db.products.aggregate(
[
{ $match: { _id: { $in: [ 6 ] } } },
{
$project:
{
_id: 0,
sizes: 1,
reversed: { $reverseArray: [ "$sizes" ] }
}
}
]
)
Résultat :
{ "reversed" : null }
Type de données incorrect
Application de $reverseArray
à un champ qui ne se résout pas en un tableau entraîne une erreur.
Exemple de document :
{ "_id" : 7, "prod" : "Box", "sizes" : "XXL" }
Appliquer $reverseArray
:
db.products.aggregate(
[
{ $match: { _id: { $in: [ 7 ] } } },
{
$project:
{
_id: 0,
sizes: 1,
reversed: { $reverseArray: [ "$sizes" ] }
}
}
]
)
Résultat :
uncaught exception: Error: command failed: { "ok" : 0, "errmsg" : "The argument to $reverseArray must be an array, but was of type: string", "code" : 34435, "codeName" : "Location34435" } : aggregate failed : [email protected]/mongo/shell/utils.js:25:13 [email protected]/mongo/shell/assert.js:18:14 [email protected]/mongo/shell/assert.js:639:17 [email protected]/mongo/shell/assert.js:729:16 [email protected]/mongo/shell/db.js:266:5 [email protected]/mongo/shell/collection.js:1058:12 @(shell):1:1