【问题标题】:RavenDb Map index querying confusionRavenDb Map 索引查询混乱
【发布时间】:2016-11-20 23:57:35
【问题描述】:

假设我们有以下地图索引:

public class CommentsIndex : AbstractIndexCreationTask<Post>
{
   public class IndexResult
   {
      public string PostId {get;set;}
      public DateTime CommentDateTime {get;set;}
   }

   public CommentsIndex()
   {
       Map = posts => from post in posts
                      from comment in post.Comment
                      select new { PostId = post.Id, CommentDateTime = comment.DateTime }; 
   }
}

此索引查询的结果将是 Post 文档的集合。但是如何通过CommentDateTime查询呢?以下查询肯定不起作用,因为CommentDateTime 不是Post 文档的一部分:

_documentSession.Query<Post, CommentsIndex>().Where(x => x.CommentDateTime < DateTime.UtcNow).ToList();

P。 S. 我知道我可以使用实时投影或调用AsProjection 来塑造索引查询结果,但我想对于这种简单的情况应该有更自然的解决方案。

【问题讨论】:

    标签: .net ravendb


    【解决方案1】:
    _documentSession.Query<CommentsIndex.IndexResult, CommentsIndex>()
        .Where(x => x.CommentDateTime < DateTime.UtcNow)
        .As<Post>()
        .ToList();
    

    注意:.As&lt;T&gt;().AsProjection&lt;T&gt;() 之间存在根本区别,因为只有后者会尝试获取字段,而第一个只会转换结果。

    【讨论】:

    • 它真的有效吗?我试图在最后一个 Raven 构建中获得相同的行为,但无法做到。
    • 亚历山大,从那以后很多事情都发生了变化。我建议您在邮件列表中发布完整的说明。
    猜你喜欢
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    相关资源
    最近更新 更多