我想为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。是否需要存储这些字段才能访问?
答案 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"] };