【问题标题】:RavenDB query by index and DateTimeRavenDB 按索引和日期时间查询
【发布时间】:2012-02-09 19:44:16
【问题描述】:

如果我的问题听起来很愚蠢,我对 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

这是类定义:

    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

创建了一个临时索引,一切都按预期工作。

有人知道我的查询有什么问题吗? 谢谢。

更新

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

【问题讨论】:

  • 您能否尝试提供一个完整的失败测试来了解这里发生了什么?
  • 感谢您的回复 Ayende,感谢您为 RavenDB 提供的帮助和努力 :) 我将在几个小时内更新我的帖子并上传数据库和完整的工作测试。但可能这是我的错,因为我猜我没有正确使用索引。

标签: datetime indexing ravendb


【解决方案1】:

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

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

我需要详细了解不同 FieldIndexing 选项之间的区别 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    相关资源
    最近更新 更多