我有一个字段,其索引为
Index(x => x.Status, FieldIndexing.Default);
在一个共有2566条记录的集合中。
现在我这样查询:
var query = _ravenSession
.Query<MyIndex.ReduceResult, MyIndex>()
.Statistics(out stats);
query = query.Where(x => x.Status != "inactive" && x.Status != "invalid" && x.Status != "sold");
我的总结果数为2512。
但如果我这样查询:
query = query.Where(x => !x.Status.In("inactive", "invalid", "sold"));
我得到的总结果数为2520.这个数如何计算不同?
我可以看到,第一个查询转换为
{((((状态:无效和状态:*)和-Status:无效)) AND -Status:sold)}
和第二个:
{(: AND - @ in`&lt; Status&gt; :(无效,无效,已售出)}}
答案 0 :(得分:2)
此查询的处理方式有所不同。
在第一种情况下,您只允许具有Status
的结果,在第二种情况下,您只会说出除了这些特定值之外的所有内容。因此,如果您的值不具有status属性,则可以解释它。