MongoDB – Modificador de ordenación de $

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 $sortmodificador 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 $sortmodificador 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 $eachmodificador en el $pushoperador. Se le permite pasar un vacío array[] en el $eachmodificador que ayude $sort al modificador a mostrar su efecto. Si usa el modificador $sort sin $eachmodificador, 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 $sortmodificador:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *