mongodb - tutorial - ¿Cómo le dice a Mongo que ordene una colección antes de limitar los resultados?
mongodb university (1)
Quiero seleccionar los documentos más recientes de una colección. La respuesta de esta pregunta mongodb: ¿cómo obtener los últimos N registros? sugiere que el orden de las operaciones en la consulta importa. Sin embargo, este no parece ser el caso (quizás desde que se lanzó Mongo 2.4). He intentado las dos consultas siguientes y parece que Mongo primero aplica el límite y luego realiza la clasificación.
Consulta 1
myCollection.find().sort( { ''$date'': 1 }).limit(50, callback);
Consulta 2
myCollection.find().limit(50).sort( { ''$date'': 1 }, callback);
¿Cuál sería la consulta correcta para decirle a Mongo que ordene primero y limite el segundo?
EDITAR --- Aquí hay un documento de muestra de la colección
{
_id: ObjectId("517eb0dddbab79c74700005d"),
audioFiles: [
{
audioFileName: "C64FEFA8-DD43-40A1-8996-35948F3438BF-6896-0000027BD4A59D91",
audioLanguage: "English",
date: ISODate("2013-05-21T16:23:04.006Z"),
flag: "1",
user: "36C4DEB6-C13D-4211-94B5-CC4DD993ECF1-6896-00000278FA7B08EC"
},
{
audioFileName: "994B6DF6-73B5-458F-912A-FF67A84534B2-23532-0000020000000000",
audioLanguage: "English",
date: ISODate("2013-05-27T10:45:04.107Z"),
flag: "1",
user: "9D7BB3F4-371B-4F2A-8DA2-0C4CE8B4E16D-974-0000000000000000"
}
],
date: ISODate("2013-04-29T17:41:49.101Z"),
imageFileName: "SteamLokomotive0498",
random: 0.6750695831142366,
thumbFileName: "SteamLokomotive0498_150x150",
user: "62923D8E-00CE-4F0C-AECA-3010D78FC9CE-226-0000000000000000",
userLanguagePref: "Cantonese"
}
El problema es que necesita ordenar en date
lugar de $date
.
myCollection.find().sort({date: 1}).limit(50, callback);
Mongo aplica la ordenación antes de limitar los resultados, independientemente del orden al que llame, sort
y limit
el cursor.
Prueba en documentos: link