サブリストの制約を使用してカウント順に並べ替えられた RavenDB のコレクションから最初の 10 個のドキュメントをクエリできるようにしたいと考えています。これは私のエンティティです:
public class Post
{
public string Title { get; set; }
public List<Like> Likes { get; set; }
}
public class Like
{
public DateTime Created { get; set; }
}
私は次のクエリで試しました:
var oneMonthAgo = DateTime.Today.AddMonths(-1);
session
.Query<Post>()
.OrderByDescending(x => x.Likes.Count(y => y.Created > oneMonthAgo))
.Take(10);
Raven は、カウントはクエリ時間ではなくインデックス時間で行う必要があると不満を漏らしています。次のコードを使用して、カウントをインデックスに移動しようとしました。
public class PostsIndex : AbstractIndexCreationTask<Post>
{
public PostsIndex()
{
var month = DateTime.Today.AddMonths(-1);
Map = posts => from doc in posts
select
new
{
doc.Title,
LikeCount = doc.Likes.Count(x => x.Created > month),
};
}
}
このインデックスを追加すると、Raven はエラー 500 をスローします。
何をすべきか?