Версионность данных в 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" } Как написать такой запрос? СПАСИБО!!! |
Часовой пояс GMT +3, время: 06:57. |