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

RavenDB: .In() and .Where() yielding different results

我有一个字段,索引为

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:inactive AND Status:*) AND -Status:invalid)) AND -Status:sold)}

第二个:

{(: AND -@in`<Status>:(inactive , invalid , sold) )}

此查询的处理方式有所不同。 在第一种情况下,您只允许具有 Status 的结果,在第二种情况下,您说的是除那些特定值之外的所有内容。因此,如果您的值没有 属性 状态,这或许可以解释这一点。