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

本文关键字:类型 嵌套 对象 文档 包含指 何查询 查询 RavenDB | 更新日期: 2023-09-27 18:10:42

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

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

Raven告诉我,他不知道如何翻译GetType。那么我如何才能做到这一点呢?

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

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

I add field to index:

MessageTypes = entry.Messages.Select(m => AsDocument(m)["$type"].ToString())

AsDocument()返回包含$type在内的所有属性的RavenJObject。有了这个属性索引,请求特定的类型非常简单