sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo ordenar dos campos con mangosta?

Consulte sort() definición.

sort({_id: -1, upvotes_count: -1})

significa ordenar el _id primero, luego ordene upvotes_count por orden de desc solo para los mismos _id publicaciones Desafortunadamente, el _id es ObjectId , que es de tipo BSON de 12 bytes, construido usando:

  • un valor de 4 bytes que representa los segundos desde la época de Unix,
  • un identificador de máquina de 3 bytes,
  • una identificación de proceso de 2 bytes, y
  • un contador de 3 bytes, que comienza con un valor aleatorio.

Es difícil obtener el mismo ObjectId . Es decir, el _id de cada registro debe ser único en este documento. Como resultado, el resultado de sus códigos de prueba solo se ordena por _id desc.

Aquí hay un ejemplo,

+---------+---------------+
| _id     |  upvote_count |
+---------+---------------+
|  1      |      5        |
|  4      |      7        |
|  3      |      9        |
|  4      |      8        |

El resultado de sort({_id: -1, upvotes_count: -1}) debería ser

+---------+---------------+
| _id     |  upvote_count |
+---------+---------------+
|  4      |      8        |
|  4      |      7        |
|  3      |      9        |
|  1      |      5        |

El upvote_count se ordenaría para el mismo _id .

Sin embargo, en este caso. Hay en el mismo _id en este caso.

+---------+---------------+
| _id     |  upvote_count |
+---------+---------------+
|  1      |      5        |
|  4      |      7        |
|  3      |      9        |
|  2      |      8        |

El resultado de sort({_id: -1, upvotes_count: -1}) debería ser

+---------+---------------+
| _id     |  upvote_count |
+---------+---------------+
|  1      |      5        |
|  2      |      8        |
|  3      |      9        |
|  4      |      7        |