Запрос RavenDB по индексу и дате и времени - PullRequest
0 голосов
/ 13 января 2012

Я довольно новичок в 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 <- вот скриншот </p>

Вот определение класса:

    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

создается временный индекс, и все работает как положено.

Кто-нибудь знает, что не так с моим запросом? Спасибо.

UPDATE

Хорошо, я удалил поля Дата, Элементы, Цена, Сумма и Элементы, Количество через управляющую студию (показано на скриншоте), и теперь запрос работает нормально. Кто-нибудь есть идеи, почему? Какова цель явного определения этих полей?

1 Ответ

3 голосов
/ 17 августа 2012

Убедитесь, что дата в индексе хранится в виде индекса (x => x.Date, FieldIndexing.Default).

Мне было присвоено значение FieldIndexing.Analysed, и я не получил правильные результатыназад.

Мне нужно больше узнать о разнице между опциями FieldIndexing:)

...