RavenDB:.In()和.Where()产生不同的结果

时间:2017-05-10 11:45:03

标签: ravendb

我有一个字段,其索引为

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; :(无效,无效,已售出)}}

1 个答案:

答案 0 :(得分:2)

此查询的处理方式有所不同。 在第一种情况下,您只允许具有Status的结果,在第二种情况下,您只会说出除了这些特定值之外的所有内容。因此,如果您的值不具有status属性,则可以解释它。