Se vuoi fare un tale ordinamento, probabilmente vorrai archiviare i tuoi dati in un modo diverso. MongoDB in genere non è così bravo a manipolare i documenti nidificati come i campi di primo livello. Nel tuo caso, consiglierei di suddividere ptime, pt e uid nella loro raccolta:
messaggi
{
"_id":417,
"ptime":ISODate("2013-11-26T11:18:42.961Z"),
"type":"1",
"txt":"test message"
},
utenti
{
"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")
}
È quindi possibile impostare un indice sulla raccolta utenti per uid, ptime e pt.
Tuttavia, dovrai eseguire due query per ottenere anche i messaggi di testo stessi.