【发布时间】:2016-04-14 20:25:34
【问题描述】:
我想要使用相同日期查询的文档上有两个日期(DeliveryDate 和 EmptyDate)字段。因此,如果我查询 2016-04-04 并且此日期在 DeliveryDate 或 EmptyDate 中,则查询应返回文档。
除了这些字段之外,我还有几个其他过滤器,因此查询可能如下所示:
var query = _documentSession.Advanced.DocumentQuery<Order, OrdersIndexFields>()
.UsingDefaultOperator(QueryOperator.And);
query.WhereBetweenOrEqual(OrdersIndexFields.DeliveryInfo_DeliveryDateUtc,
predicate.LocalDeliveryFrom.Value,
predicate.LocalDeliveryTo.Value);
query.OrElse().WhereBetweenOrEqual(OrdersIndexFields.EmptyOrderDoneDate,
predicate.LocalDeliveryFrom.Value,
predicate.LocalDeliveryTo.Value);
query.WhereEquals(OrdersIndexFields.Status, predicate.Status);
query
.Skip(0).Take(1024)
.ToArray();
问题是我使用的 OrElse() 方法没有按预期工作。上述查询返回的结果太多。
如何在 RavenDB 查询中编写正确的 OR 语句?
【问题讨论】:
-
您使用 Lucene 查询 API 而非标准 Raven LINQ 查询 API 是否有原因?
-
@JudahHimango 我正在使用索引中的连接集合字段进行过滤,据我所知,无法对索引字段进行 linq 过滤,因此我必须坚持使用 Lucene 查询 API