如何在RavenDB中查询包含指定类型的嵌套对象的文档

Sar*_*rus 1 c# ravendb

我有一个使用索引的RavenDB查询,我需要添加条件检查嵌套对象的类型(这些对象不是单独的文档)

entries = session.Query<result, index>()
  /* some conditions here */
  .Where(x => x.Messages.Any(m => m.GetType() == typeof(MyMessage)))
  .ToList();
Run Code Online (Sandbox Code Playgroud)

Raven告诉我,他不知道如何翻译GetType。那么我该如何实现呢?

Sar*_*rus 5

经过长时间的研究,我找到了解决方案。

我在索引中添加了字段:

MessageTypes = entry.Messages.Select(m => AsDocument(m)["$type"].ToString())
Run Code Online (Sandbox Code Playgroud)

AsDocument()返回RavenJObject包含所有属性(包括)的返回值$type。有了该属性的索引,就可以很简单地要求某种类型