2012-01-13 75 views
0

我對RavenDB相當陌生,所以很抱歉,如果我的問題聽起來很愚蠢。我有一個包含DateTime屬性的類。我將這個類的實例存儲在RavenDB中。我已經定義的索引方式如下:RavenDB按索引和日期時間查詢

from doc in docs.Orders 
from docItemsItem in ((IEnumerable<dynamic>)doc.Items).DefaultIfEmpty() 
select new { Items_Price_Amount = docItemsItem.Price.Amount, Items_Quantity = docItemsItem.Quantity, Date = doc.Date } 

http://dl.dropbox.com/u/3055964/Capture.GIF < - 這裏是截圖

下面的類定義:

public class Order 
    { 
     public DateTime Date { get; set; } 
     public IList<OrderItem> Items { get; set; } 
     public string CustomerId { get; set; } 

     public Order() 
     { 
      Items = new List<OrderItem>(); 
     } 
    } 

現在,當我嘗試查詢RavenDB與上面顯示的指數,查詢完全沒有結果。

var orders = session.Query<Order>("OrdersIndex").Where(o => o.Date > DateTime.Now).ToList(); // orders.Count == 0 

如果我忽略從查詢索引,就像這樣:

var orders = session.Query<Order>().Where(o => o.Date > DateTime.Now).ToList(); // orders.Count == 128 

創建一個臨時索引和eveything按預期工作。

有沒有人有任何想法我的查詢有什麼問題? 謝謝。

UPDATE

還好吧,我刪除字段日期,項目,價格,數量和項目,數量通過管理工作室(在屏幕截圖所示),而現在的查詢工作正常。任何人都知道爲什麼?明確定義這些字段的目的是什麼?

+0

你可以嘗試提供全面失敗的測試來了解什麼是怎麼回事? – 2012-01-13 21:40:30

+0

感謝您的回覆Ayende,感謝您的幫助和您投入RavenDB的努力:)我將在幾個小時內更新我的文章,並上傳數據庫和完整的工作測試。但可能,這是我的錯,因爲我猜我沒有正確使用索引。 – Davita 2012-01-14 10:21:33

回答

3

檢查索引中的日期是否存儲爲索引(x => x.Date,FieldIndexing.Default)。

我把它設置爲FieldIndexing.Analysed,並沒有得到正確的結果。

我需要閱讀更多的關於不同FieldIndexing選項:)之間的差異