私は基本的なスキーマを持っています
Post {
Labels: [
{ Text: "Mine" }
{ Text: "Incomplete" }
]
}
そして、「私のもの」と「不完全」の両方のラベルが付いたすべての投稿を求めるために、レイヴンに問い合わせています。
queryable.Where(candidate => candidate.Labels.Any(label => label.Text == "Mine"))
.Where(candidate => candidate.Labels.Any(label => label.Text == "Incomplete"));
これにより、Raven クエリが生成されます (Raven サーバー コンソールから)
Query: (Labels,Text:Incomplete) AND (Labels,Text:Mine)
Time: 3 ms
Index: Temp/XWrlnFBeq8ENRd2SCCVqUQ==
Results: 0 returned out of 0 total.
どうしてこれなの?「不完全」を含む JUST を照会すると、1 つの結果が得られます。「Mine」を含む JUST をクエリすると、同じ結果が得られます。両方をクエリすると、結果が 0 になるのはなぜですか?
編集:
わかりました-それで、もう少し進みました。「自動生成インデックス」はこんな感じ
from doc in docs.FeedAnnouncements
from docLabelsItem in ((IEnumerable<dynamic>)doc.Labels).DefaultIfEmpty()
select new { CreationDate = doc.CreationDate, Labels_Text = docLabelsItem.Text }
したがって、クエリは基本的に2つの異なる値に対して同じラベルをテストしていたと思います。悪い。
私はこれを次のように変更しました:
from doc in docs.FeedAnnouncements
from docLabelsItem1 in ((IEnumerable<dynamic>)doc.Labels).DefaultIfEmpty()
from docLabelsItem2 in ((IEnumerable<dynamic>)doc.Labels).DefaultIfEmpty()
select new { CreationDate = doc.CreationDate, Labels1_Text = docLabelsItem1.Text, Labels2_Text = docLabelsItem2.Text }
これで、私のクエリ (Raven Studio 内) が機能しますLabels1_Text:Mine AND Labels2_Text:Incomplete
!
しかし、Linq からクエリを実行するときに、これらのファントム フィールド (Labels1_Text および Labels2_Text) にどのように対処すればよいでしょうか?