MongoDB proporciona diferentes tipos de operadores de actualización de array para actualizar los valores de los campos de array en los documentos y el modificador $sort es uno de ellos. Este modificador se utiliza para ordenar los elementos de la array durante la operación $push u ordenar los elementos de la array en orden ascendente o descendente durante la operación $push.
Sintaxis:
{ $push: { <field>: { $each: [ <value1>, <value2>, ... ], $sort: <sort specification> } } }
- Si desea ordenar los elementos (que no son documentos) de la array o los elementos de la array (que son documentos) en orden ascendente, establezca el valor del
$sort
modificador en 1. - Si desea ordenar los elementos (que no son documentos) de la array o los elementos de la array (que son documentos) en orden descendente, establezca el valor del
$sort
modificador en -1. - Si los elementos de la array son documentos y desea clasificar los campos de los documentos, especifique un documento de clasificación con el campo y el orden (orden ascendente o descendente), es decir, { <campo>: 1 } o { <campo>: – 1 }.
Nota: No mencione el campo de la array contenedora en la especificación de clasificación, como { «myArray.field»: 1} es incorrecto. - El modificador debe aparecer con
$each
modificador en el$push
operador. Se le permite pasar un vacíoarray[]
en el$each
modificador que ayude$sort
al modificador a mostrar su efecto. Si usa el modificador $sort sin$each
modificador, obtendrá un error. - Este modificador puede ordenar los elementos de la array que no son documentos.
- Si los elementos de la array son documentos, este modificador puede ordenar por todo el documento o por un campo específico en los documentos.
En los siguientes ejemplos, estamos trabajando con:
Base de datos: GeeksforGeeks
Colección: colaborador
Documento: dos documentos que contienen los detalles del colaborador en forma de pares de valor de campo.
Clasificación de elementos de array que no son documentos:
En este ejemplo, estamos ordenando todos los elementos del campo de idioma en orden ascendente.
db.contributor.update({name: "Suman"}, {$push: { language: { $each: ["Go", "Scala"], $sort: 1}}})
[/código fuente]
Ordenar una array de documentos:
En este ejemplo, estamos ordenando todos los documentos del campo de artículos en orden ascendente.
db.contributor.update({name: "Suman"}, {$push: { articles: { $each: [], $sort: 1}}})
Ordenar una array de documentos por un campo:
En este ejemplo, estamos ordenando todos los documentos del campo de artículos por campo de artículo (orden descendente).
db.contributor.update({name: "Suman"}, {$push: { articles: { $each: [{language: "Go", tArticles: 120}, {language: "Perl", tArticles: 24}], $sort:{tArticles: -1}}}})
Actualizando la array usando el $sort
modificador:
En este ejemplo, estamos ordenando los elementos del campo de idioma en orden descendente.
db.contributor.update({}, {$push: {language: {$each:[], $sort: -1}}}, {multi: true})
Usando $sort
el modificador con otros modificadores con el operador $push:
En este ejemplo, estamos usando el modificador $sort con otros modificadores como $each y $slice con el operador $push.
db.contributor.update({name: "Rohit"}, {$push: { language: { $each: ["C", "Go"], $sort: 1, $slice: 4}}})
Aquí,
- El modificador $each se usa para agregar varios documentos a la array de idioma.
- El modificador $sort se usa para ordenar todos los elementos de la array de idioma modificada en forma ascendente.
- El modificador $slice se usa para mantener solo los primeros cuatro elementos ordenados de la array de idioma.
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA