このような並べ替えを行う場合は、データを別の方法で保存することをお勧めします。の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のユーザーコレクションにインデックスを設定できます。
ただし、テキストメッセージ自体も取得するには、2つのクエリを実行する必要があります。