RavenStudio用于聚合“集合”选项卡中显示的文档类型的查询和索引是什么?

时间:2012-10-31 11:18:34

标签: ravendb

我想为Raven数据库中的每个文档获取Raven-Clr类型。我已经尝试了以下索引,但我只检索文档Id:

地图:

from doc in docs 
let DocumentType = doc[""@metadata""][""Raven-Entity-Name""]
let Id = doc[""@metadata""][""Id""]
let LastModified = (DateTime)doc[""@metadata""][""Last-Modified""]
select new {DocumentType = doc[""@metadata""][""Raven-Entity-Name""], Id, LastModified}

变换:

from result in results
            select new {Id = result.Id, DocumentType = result.DocumentType, LastModified = result.LastModified}

我的目标是获取文档元数据并显示一个独特的收集/文档类型列表,如RavenStudio。我想创建一个投影并填充以下类的列表:

public class MetaDocument
{
  public string Id{get; set;}
  public string DocumentType {get; set;}
  public DateTime LastModified {get; set;}
}

我只能获取doc id,其他值将返回null。

注意 我查看了Fitzchak建议的Raven-Entity-Name。它是人口。

修改

我找到this approach on Google Groups,其中地图被更改为包含

DocumentType = ((dynamic)doc)[""@metadata""][""Raven-Entity-Name""]

结果是一样的。

修改2

我在RavenStudio中检查了查询结果,并且投影本身包含LastModified和DocumentType的null。是否需要存储这些字段才能访问?

1 个答案:

答案 0 :(得分:1)

RavenDB Studio使用由工作室创建的Raven/DocumentsByEntityName索引(默认情况下)。这是一个简单的索引(仅限地图)。

地图:

from doc in docs 
let Tag = doc["@metadata"]["Raven-Entity-Name"]
select new { Tag, LastModified = (DateTime)doc["@metadata"]["Last-Modified"] };