Существует команда distinct
, однако я не уверен, что это то, что вам нужно. Distinct - это своего рода команда запроса, и у многих пользователей вы, вероятно, захотите свернуть данные не в режиме реального времени.
Map-Reduce, вероятно, является одним из способов пойти сюда.
Фаза карты: Ваш key
будет просто идентификатором. Ваш value
будет выглядеть примерно так: {current_status:'blah',date:1234}
.
Фаза сокращения: При наличии массива значений вы можете получить самое последнее и вернуть только его.
Для оптимальной работы вам, вероятно, захочется взглянуть на новую функцию с 1.8.0. функция «повторного уменьшения» . Позволит обрабатывать только новые данные вместо повторной обработки всей коллекции статусов.
Другой способ сделать это - создать «самую последнюю» коллекцию и привязать вставку статуса к этой коллекции. Поэтому, когда вы вставляете новый статус для пользователя, вы обновляете его «самый последний».
В зависимости от важности этой функции, вы можете сделать обе вещи.