2016-09-01 7 views
1

CavenプロジェクトでRavenDBを使い始めました。私はメッセージIdにより文書を取得することができますRavenDBの接頭辞の扱い

{ 
    "MessageId": "8c34dec8-e6fe-6bee-2dc6-2cf83e374090", 
    "Headers": { 
    "Header.MessageId": "14f6cdf3-142d-4ab0-9610-a65600f1f460", 
    "Header.Timestamp": "2016-08-02 12:40:55:783130 Z", 
    "$.diagnostics.host": "1ddc6cefd4d776f1de8fefc33a45d020", 
    }, 
    "Timestamp": "2016-08-02T12:43:25.3914940Z" 
} 

:私は構造を持つ文書を持って

var doc = session.Query<Messages>().Where(w => w.MessageId == "8c34dec8-e6fe-6bee-2dc6-2cf83e374090").ToList(); 

しかし、私は、文書を取得したい:Headers.Header.MessageId。 残念ながら、ヘッダーには接頭辞(ヘッダーと$)が付いたキーがあり、私はsession.Query<Messages>()ステートメントでそれを処理する方法がわかりません。私はRavenDB Studioでそれを行うことができます

from doc in docs.Messages 
where doc.Headers["Header.MessageId"] == "14f6cdf3-142d-4ab0-9610-a65600f1f460" 
select new { 
    Id = doc.MessageId, 
    MessageId = doc.Headers["Header.MessageId"] 
} 

私はLuceneクエリを作成しようとしましたが、それは働いていない:

var doc = session.Advanced.LuceneQuery<object>().WhereEquals("Headers.Header.MessageId", "14f6cdf3-142d-4ab0-9610-a65600f1f460").ToList(); 

をあなたは私が間違ってやっているものを私に教えてくれて、私を助けることができますお願いします?

答えて

0

は管理者が作成したドキュメントですか?あなたのドキュメントは.netクラスでも(メッセージでも)表現できないため(ドットでプロパティ名を持つことはできません)、これはドキュメントをロードできないことを意味します。 (ドットを削除するために)ドキュメントにパッチを当てる必要があります