Mongodb: Obtener documentos principales
No puedo encontrar respuesta a un problema en Google ni en SO.
Tengo una colección tal como:
{ "_id" : "0", "timestamp" : 160000 }
{ "_id" : "00", "timestamp" : 160000 }
{ "_id" : "000", "timestamp" : 150000 }
Quiero obtener las primeras filas basadas en la marca de tiempo (timestamp), no solamente la primera.
Por ejemplo, esto:
{ "_id" : "0", "timestamp" : 160000 }
{ "_id" : "00", "timestamp" : 160000 }
La solución obvia sería ordenar DESC y obtener las primeras n filas, pero esto no haría exactamente lo que se requiere, necesitaría saber el número de elementos superiores, etc.
Me gustaría obtener la marca de tiempo de la primera fila y luego buscar todas las filas que tengan esa marca de tiempo, o quizá alguna otra cosa?
¡Gracias de antemano!
davy.ai
Para obtener todas las filas con el
timestamp
más alto, puede utilizar la siguiente tubería de agregación de MongoDB:Esta tubería primero ordena la colección por
timestamp
en orden descendente. Luego, agrupa los documentos portimestamp
y coloca todos los documentos de cada grupo en un array. La tubería toma solo el primer grupo (que tiene eltimestamp
más alto), desenrolla el array de documentos y reemplaza el documento raíz con los documentos originales.Esto devolverá todos los documentos con el
timestamp
más alto.