首页 文章

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

提问于
浏览
0

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

Map :

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 .

Note 我按照Fitzchak的建议检查了Raven-Entity-Name . 它是人口 .

Edit

我找到了this approach on Google Groups,其中Map被改为包含

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

结果是一样的 .

Edit 2

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

1 回答

  • 1

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

    Map :

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

相关问题