2014-06-27 63 views
1

的嵌套對象我使用索引有一個RavenDB查詢和我需要添加條件檢查嵌套對象類型文檔(這些對象不是單獨的文件)如何查詢RavenDB包含指定類型

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

烏鴉告訴我,他不知道如何翻譯GetType。那麼我怎麼能做到這一點?

+0

MyMessage是否有一個屬性,你可以查詢一個可預測的值? – Brian

+0

不,我們有不同的模板選擇消息類型。這是問題 - 所有按摩都有相同的屬性。 – Sarrus

回答

4

經過長期的研究,我找到了解決方案。

予增加的字段中的索引:

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

AsDocument()返回RavenJObject其中包含的所有屬性,包括$type。有了這個屬性索引,要求某種類型很簡單