2015-11-16 3 views
0

У меня есть приложение, в котором я храню отладочную информацию из нескольких источников. Данные хранятся в классе, как следующее:Группировка элементов на основе последнего добавленного элемента в наборе

public class DebugMessage 
{ 
    public string ApplicationName { get; set; } 
    public string Details { get; set; } 
    public string Id { get; set; } 
    public DateTime OccurredOn { get; set; } 
    public IList<string> Tags { get; set; } 
    public string TextMessage { get; set; } 
    public MessageTypes Type { get; set; } 
    public IDictionary<string, string> Metadata { get; set; } 

    public int Count {get;set;} 

    public bool Same(DebugMessage other){...} 
} 

Теперь у меня уже есть индексы настройки и карты/уменьшить для каждого элемента мне нужно. Теперь я хотел бы сделать следующее:

При добавлении нового элемента в коллекцию, если эти элементы «выглядят одинаково» (путем вызова одного и того же метода в элементе и передачи последнего добавленного элемента в сбор), я хотел бы просто обновить последний добавленный элемент и не добавлять новый элемент. Если элементы не совпадают, я хотел бы добавить их в коллекцию.

Думаю, я могу сделать это с помощью какой-либо карты/Уменьшить, но я не могу обернуть вокруг себя эту голову. Я новичок в Raven и не знаю, как это сделать (или даже если это возможно).

Любые указания?

ответ

0

Вам нужно перенести свой метод одним и тем же способом на индекс карты/уменьшения и на основе значений, которые заставляют вас считать две вещи одинаковыми. В качестве альтернативы запросите аналогичное отладочное сообщение и обновите результат.

+0

Спасибо Ayende. Я просто хочу группировать элементы, похожие на последний вставленный элемент. Я не хочу группировать все подобные элементы (я понимаю, как это сделать, и я на самом деле делаю это с помощью тегов). Уже сейчас, по запросу, теперь ... Могу ли я запросить последний вставленный документ, не прибегая к указателям? Поскольку для этого нужно работать, я должен быть уверен, что всегда получаю последний вставленный элемент, независимо от того, был ли он проиндексирован или нет, и я не хочу запускать WaitForNonStaleResults ... – CheloXL

+0

Вы хотите, чтобы последний последний вставил документ? Вы можете сохранить документ «config/last-entries» и проверить их. –

Смежные вопросы