Wenn Sie eine solche Sortierung durchführen möchten, möchten Sie Ihre Daten wahrscheinlich auf andere Weise speichern. MongoDB ist im Allgemeinen nicht annähernd so gut darin, verschachtelte Dokumente zu manipulieren wie Felder der obersten Ebene. In Ihrem Fall würde ich empfehlen, ptime, pt und uid in ihre eigene Sammlung aufzuteilen:
Nachrichten
{
"_id":417,
"ptime":ISODate("2013-11-26T11:18:42.961Z"),
"type":"1",
"txt":"test message"
},
Nutzer
{
"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")
}
Sie können dann einen Index für die Benutzersammlung für uid, ptime und pt festlegen.
Sie müssen jedoch zwei Abfragen durchführen, um auch die Textnachrichten selbst zu erhalten.