【问题标题】:Grouping items based on last added item in set根据集合中最后添加的项目对项目进行分组
【发布时间】:2015-11-16 20:39:39
【问题描述】:

我有一个应用程序,用于存储来自多个来源的调试信息。数据存储在如下类中:

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){...}
}

现在,我已经为我需要的每个项目设置了索引和 maps/reduce。我现在想做的是:

当向集合添加新项目时,如果这些项目“看起来相同”(通过对项目调用 Same 方法并传入集合中最后添加的项目),我只想更新最后添加的项目项目,不要添加新项目。如果项目不一样,我想将其添加到集合中。

我想我可以使用某种 Map/Reduce 来做到这一点,但我无法解决这个问题。我是 Raven 的新手,不知道如何执行上述操作(或者即使可能)。

有什么路线吗?

【问题讨论】:

    标签: mapreduce ravendb


    【解决方案1】:

    您需要将您在 Same 方法中移动到 map/reduce 索引,并根据使您认为这两个事物相同的值进行分组。 或者,查询类似的调试消息,并更新结果。

    【讨论】:

    • 谢谢艾扬德。我只想对类似于最后插入的项目的项目进行分组。我不想对所有相似的项目进行分组(我知道如何这样做,而且我实际上是用标签来做的)。虽然已经在查询的事情上,现在......我可以查询最后插入的文档,而不必求助于索引吗?因为要让它工作,我必须确保我总是得到最后插入的项目,无论它是否被索引,并且我不想运行 WaitForNonStaleResults...
    • 您想要绝对最后插入的文档吗?您可以保留一个文档“config/last-entries”并检查它们。
    猜你喜欢
    • 2022-01-06
    • 2018-12-23
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    相关资源
    最近更新 更多