Версионность данных в MongoDB
Здравствуйте!
Реализовал версионность данных в Mongo. Вот как это выглядит:
{ "_id" : ObjectId("5298267c5248490b026d3c8a"), "id" : 1, "uid" : 1, "name" : "Test 1" }
{ "_id" : ObjectId("529826855248490b026d3c8b"), "id" : 2, "uid" : 2, "name" : "Test 2" }
{ "_id" : ObjectId("529826b15248490b026d3c8d"), "id" : 3, "uid" : 2, "name" : "Test 2.1" }
{ "_id" : ObjectId("529834b45248490b026d3c8f"), "id" : 4, "uid" : 2, "name" : "Test 2.2" }
{ "_id" : ObjectId("529834c05248490b026d3c90"), "id" : 5, "uid" : 3, "name" : "Test 3" }
{ "_id" : ObjectId("529834c85248490b026d3c91"), "id" : 6, "uid" : 3, "name" : "Test 3.1" }
{ "_id" : ObjectId("529834d35248490b026d3c92"), "id" : 7, "uid" : 3, "name" : "Test 3.2" }
Т.е. есть uid некоторых данных (документов). При редактировании данных (документа с заданным uid) происходит запись нового документа в базу с заданным uid. В результате в коллекции несколько записей с одним и тем же uid (самая свежая с максимальным id). id уникален в рамках всей коллекции, а uid только для документа.
Теперь попытался написать запрос для получения всех документов с последней редакцией (т.е. с максимальным значением id).
Вот запрос: db.test.aggregate({$group : {_id:"$uid", "id":{$last:"$id"}}})
Результат запроса:
{"result" : [
{"_id" : 3,"id" : 7},
{"_id" : 2,"id" : 4},
{"_id" : 1,"id" : 1}
],"ok" : 1}
Здесь получаю список id документов (1,4 и 7). Теперь зная эти id могу получить сами документы.
А как написать запрос, чтобы сразу получить:
{ "_id" : ObjectId("5298267c5248490b026d3c8a"), "id" : 1, "uid" : 1, "name" : "Test 1" }
{ "_id" : ObjectId("529834b45248490b026d3c8f"), "id" : 4, "uid" : 2, "name" : "Test 2.2" }
{ "_id" : ObjectId("529834d35248490b026d3c92"), "id" : 7, "uid" : 3, "name" : "Test 3.2" }
Как написать такой запрос?
СПАСИБО!!!
|