Jeśli chcesz to zrobić, prawdopodobnie chcesz przechowywać swoje dane w inny sposób. MongoDB generalnie nie jest tak dobry w manipulowaniu zagnieżdżonymi dokumentami, jak pola najwyższego poziomu. W twoim przypadku polecam podzielenie ptime, pt i uid na ich własną kolekcję:
wiadomości
{
"_id":417,
"ptime":ISODate("2013-11-26T11:18:42.961Z"),
"type":"1",
"txt":"test message"
},
użytkownicy
{
"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")
}
Następnie możesz ustawić indeks w kolekcji użytkowników dla uid, ptime i pt.
Będziesz jednak musiał wykonać dwa zapytania, aby otrzymać same wiadomości tekstowe.