【发布时间】:2013-05-06 23:46:23
【问题描述】:
我在 RavenDB 中有许多文档的形式:
{
"Id": "composite of namespace and video id",
"Namespace": "youtube",
"VideoId": "12345678901",
"Start": "00:00:05"
}
我有许多文档引用了实际事物的不同部分;在这种情况下,我有多个文档代表视频中的不同时间戳。
我想做的是计算特定Namespace 的VideoId 实例的不同数量。
起初,我以为我可以处理映射中的 distinct:
from v in docs.Clips.Select(c => new { c.Namespace, c.VideoId }).Distinct()
但这不起作用,因为该查询并未在整个文档集上运行(因此无法在此处执行Distinct 调用)。
我曾考虑尝试在 reduce 部分中处理这个问题,但我想不出一个可以适当分组的聚合操作。
现在map/reduce结构的形状是:
new { Type = "providercount", Key = "youtube", Count = 1 }
因为这是生成摘要的多图的一部分。
如何使用此文档结构生成不同 Namespace/VideoId 值的计数?
【问题讨论】:
-
如何进行非重复计数是一个很好的问题。但是,如果您的
Id值类似于clips/youtube/12345678901- 那么是否已经没有重复的可能性? -
@MattJohnson 否,因为时间组件也嵌入在 ID 中。所以 ID 类似于:
clips/youtube=12345678901;t=10。另一个有效的 ID 可能是clips/youtube=12345678901;t=20所以VideoId之间的唯一性不保证。