我有一個RavenDB索引問題。RavenDB:靜態索引投射和排序問題
簡單的查詢看起來是這樣的:
var values =
myCollection.Query.Where(w =>
w.MyId == MyId &&
w.IsReady == false &&
w.IsDeleted &&
w.Rate > 0)
在執行過程中烏鴉創建動態索引:
from doc in docs.MyCollection
select new { Rate = doc.Rate, IsReady = doc.IsReady, IsDeleted = doc.IsDeleted, MyId = doc.MyId }
與額外的選項: 場 - >率; 存儲 - >否; 索引 - >默認; Sort - > Double;
Field Rate has decimal type。
問題:
我想添加靜態指標,但是當我指定索引是這樣的:
public class MyIndex : AbstractIndexCreationTask<MyCollection> {
public MyIndex() {
Map = d => d.Select(s => new { Rate = s.Rate, IsReady = s.IsReady, IsDeleted = s.IsDeleted, MyId = s.MyId });
Sort(x => x.Rate, SortOptions.Double);
}
}
烏鴉是創建指標略有不同:額外
from doc in docs.MyCollection
select new { Rate = (decimal)doc.Rate, IsReady = doc.IsReady, IsDeleted = doc.IsDeleted, MyId = doc.MyId }
選項: Field - > Rate; 存儲 - >否; 索引 - >默認; Sort - > Double;
唯一的區別是,我在靜態指標已經鑄造,因爲我的字段類型爲小數和我使用雙排序選項。
因爲這個Raven沒有使用我的靜態索引,而是每次執行查詢時創建一個動態索引。
我試圖在Sort()中做一些投射,但是索引還沒有被創建。解決此問題的一種方法是在創建後從管理控制檯手動修改靜態索引,但這不是一個好的解決方案。
任何想法如何處理? 謝謝。
編輯: 又如:
字段日期時間類型和使用日期時間值作爲查詢謂詞(/小於更大)。 Raven在動態索引創建中挑選字符串作爲SortOption,當我嘗試準備靜態索引時,我得到了投射問題。
感謝您的回答。是的,我知道我可以直接指定索引名稱,但我不想這樣做:)我沒有直接使用Session.Query(),如果Raven自動選擇索引而不指定名稱,對我來說會更容易。 – 2013-04-10 09:10:59