2012-02-25 11 views
2

RavenDB Studioでは、69個のCustomVariableGroupドキュメントが表示されます。私のクエリは、そのうちの66だけを返します。いくつかの掘り下げの後、ではない3つのドキュメントが返され、が新しいクラス構造を持つことがわかりました。プロパティが削除されました。私はこれらの3つのCustomVariableGroupドキュメントを保存したので、それらの構造は他の66と異なっています。なぜなら、それらのすべてをクエリすると、古い構造の他の66のドキュメントしか取得できないのです。私はこれを行う場合、私が欠落している3つの文書のいずれかを取得することができ、プロパティが削除されたRavenDBクエリドキュメント

Session.Query<CustomVariableGroup>().Dump(); // returns 66 docs 

しかし:

どちらも私のC#のコード、およびLinqPadの私のクエリ、唯一ここで66を返すLinqPadクエリです上記クエリから:

Session.Query<CustomVariableGroup>().Where(x => x.Name == "Derating").Dump(); 

すべてのドキュメントを1つのクエリで返すにはどうすればよいですか?

**編集:LinqPadクエリのSQLタブのインデックス情報**

(とレイヴンサーバ出力で)、インデックスは次のようになります。

URL:/インデックス/ダイナミック/ CustomVariableGroups?クエリ= &スタート= 0 &のpageSize = 128 &集約=なし

私はそれがダイナミックだと思われるので、レイヴンStudioでそのインデックスが表示されません。

**編集2:このHACKが機能**

私はこれを行う場合、私はすべての69件の文書を入手:

Session.Query<CustomVariableGroup>().Where(x => x.Name != string.Empty).Dump(); 

私の推測では、レイヴンのみ取得古いインデックスを使用しなければならないということです削除された列がまだ含まれているドキュメント私は何とか新しい/別のインデックスを使用する必要があります...

興味深いことに、これは動作しません。それだけで66を返します。

Session.Query<CustomVariableGroup>().Where(x => x.Id != string.Empty).Dump(); 

**編集3:このHACKが同様に動作します**

Session.Advanced.LuceneQuery<CustomVariableGroup>("Raven/DocumentsByEntityName").Where("Tag:CustomVariableGroups").Dump(); 
+0

私はあなた自身のマップ(インデックス)を作って、同じ結果を得ようとします。また、この質問をRavenDB GoogleグループのAyende/teamモニタに投稿して、そのグループを迅速に返信する可能性があります。答えが見つかったらここに戻ってください。あなたが見つけたものを知りたいです...私はまだRavenDBにとって本当に新しい自分です。 – scarpacci

+0

私はインデックスを試しましたが、それでもまだ66のドキュメントしか持っていません。すぐに回答が得られない場合は、Googleグループにお試しください。そして、はい、私はここでも答えを掲示します。ありがとう! –

答えて

2

インデックスを使用することができ、除去しなければなりませんでした。

前に**これは動作しませんでした(唯一の69件の文書の66返された)**

:**修正が**私のC#から削除された古いプロパティを使用したインデックスを削除します

Session.Query<CustomVariableGroup>().Dump(); 

をクラス:レイヴンメーカーで

、私はこのインデックスを削除:

:オート/ CustomVariableGroups/ByApplicationId

**後**この同じクエリは今、すべての69件の文書を返します。

Session.Query<CustomVariableGroup>().Dump(); 

ここで、なぜこれらのクエリがそのインデックスを使用するのかわかりません。 ByApplicationIdではなく、すべてのCustomVariableGroupドキュメントを照会しています。ただし、そのインデックスを削除することで修正されました。誰かが理由を説明できると確信しています。

+1

動的クエリを使用している場合は、一致するインデックスを選択します。そのプロパティのみを使用したインデックスがある場合は、そのプロパティが選択されていない可能性があります。 –

+0

ありがとうございます。あなたのコメントはこれが正解であることを確認します。 –

+0

インデックスが無効になったことを知るにはどうすればよいですか? – SandRock

0

インデックスが何のように見えるのですか?インデックスを手動で作成したのか、それとも動的に作成したのですか?上記のあなたのコメントに基づいて問題の原因がオブジェクトに構造変更されたのかどうか疑問に思うだけです。

-S-

+0

私の**編集**の質問を参照してください。 –

0

そのあなたが期待するすべての結果を返さない場合、それは...古いインデックスのだろう。

あなたが古いプロパティで

.Customize(X => x.WaitForNonStaleResultsAsOfLastWrite())

+0

私は実際にそれを試みたが、それは助けにはならなかった。 –

+0

しかし、私は働いていたハックを試しました。上記の**編集2 **を参照してください。 –

関連する問題