2012-05-01 82 views
3

我有一個基本的架構烏鴉查詢返回0結果集合包含

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")); 

這導致烏鴉查詢(從烏鴉服務器控制檯)

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 } 

現在我的查詢(在烏鴉工作室)Labels1_Text:Mine AND Labels2_Text:Incomplete的作品!

但是,如何從Linq查詢這些幻像字段(Labels1_Text和Labels2_Text)?

回答

1

Adam, 你說得對。默認索引會生成2個索引條目,並且您的查詢正在單個索引條目上執行。

你想要的是要麼使用交集,或者創建自己的指標是這樣的:

from doc in docs.FeedAnnouncements 
select new { Labels_Text = doc.Labels.Select(x=>x.Text)} 

這將讓你在一個單一的索引項,您可以在執行查詢的所有標籤的文本。

+0

謝謝艾恩德 - 你能否稍微詳述一下「所有標籤的文字」?上述索引是否會產生類似於「{Labels_Text:[」Label1「,」Label2「]}?的內容?謝謝 – Adam