按索引和DateTime查询RavenDB

时间:2012-01-13 15:58:44

标签: datetime indexing ravendb

我对RavenDB很新,很抱歉,如果我的问题听起来很愚蠢。我有一个包含DateTime属性的类。我在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&lt; - 这是截图

这是类定义:

    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按预期工作。

有谁知道我的查询有什么问题? 感谢。

更新

好吧,我通过管理工作室删除了字段日期,项目,价格,金额和项目,数量(如屏幕截图所示),现在查询工作正常。任何人都知道为什么?明确定义这些字段的目的是什么?

1 个答案:

答案 0 :(得分:3)

检查索引中的日期是否存储为索引(x =&gt; x.Date,FieldIndexing.Default)。

我将它设置为FieldIndexing.Analysed,并且没有得到正确的结果。

我需要阅读更多关于不同FieldIndexing选项之间差异的内容:)