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
的结果,在第二种情况下,您说的是除那些特定值之外的所有内容。因此,如果您的值没有 属性 状态,这或许可以解释这一点。
我有一个字段,索引为
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
的结果,在第二种情况下,您说的是除那些特定值之外的所有内容。因此,如果您的值没有 属性 状态,这或许可以解释这一点。