Pokud chcete provést takové třídění, pravděpodobně budete chtít uložit data jiným způsobem. MongoDB obecně není v manipulaci s vnořenými dokumenty tak dobrý jako pole nejvyšší úrovně. Ve vašem případě bych doporučil rozdělit ptime, pt a uid do jejich vlastní kolekce:
zprávy
{
"_id":417,
"ptime":ISODate("2013-11-26T11:18:42.961Z"),
"type":"1",
"txt":"test message"
},
uživatelů
{
"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")
}
Poté můžete nastavit index v kolekci uživatelů pro uid, ptime a pt.
Budete však muset provést dva dotazy, abyste také dostali samotné textové zprávy.