Ако искате да направите такова сортиране, вероятно искате да съхранявате данните си по различен начин. MongoDB като цяло не е толкова добър с манипулирането на вложени документи, колкото полетата от най-високо ниво. Във вашия случай бих препоръчал да се разделят ptime, pt и uid в тяхната собствена колекция:
съобщения
{
"_id":417,
"ptime":ISODate("2013-11-26T11:18:42.961Z"),
"type":"1",
"txt":"test message"
},
потребители
{
"id":417,
"ptime":ISODate("2013-11-26T11:18:42.961Z"),
"uid":"52872ed59542f",
"pt":ISODate("2013-11-26T11:18:42.961Z")
},
{
"id":417,
"ptime":ISODate("2013-11-26T11:18:42.961Z"),
"uid":"524eb460986e4",
"pt":ISODate("2013-11-26T11:18:42.961Z")
},
{
"id":417,
"ptime":ISODate("2013-11-26T11:18:42.961Z"),
"uid":"524179060781e",
"pt":ISODate("2013-11-27T12:48:35Z")
}
След това можете да зададете индекс на потребителската колекция за uid, ptime и pt.
Ще трябва да направите две заявки, за да получите и самите текстови съобщения.