为什么RavenDB返回错误的总结果计数?
如下面的单元测试所示,我期望统计结果为2,但为3。为什么呢为什么RavenDB返回错误的总结果计数?,ravendb,Ravendb,如下面的单元测试所示,我期望统计结果为2,但为3。为什么呢 [Test] public void RavenQueryStatisticsTotalResultsTest1() { using (var db = _documentStore.OpenSession()) { db.Store(new Club { Name = "Foo1", Type = "Amateur" }); // --> Match
[Test]
public void RavenQueryStatisticsTotalResultsTest1()
{
using (var db = _documentStore.OpenSession())
{
db.Store(new Club { Name = "Foo1", Type = "Amateur" }); // --> Matches all conditions
db.Store(new Club { Name = "Foo2", Type = "Professional" });
db.Store(new Club { Name = "Foo3", Type = "Amateur" }); // --> Matches all conditions
db.Store(new Club { Name = "Boo1", Type = "Amateur" });
db.Store(new Club { Name = "Boo2", Type = "Professional" });
db.SaveChanges();
}
WaitForIndexing(_documentStore);
using (var db = _documentStore.OpenSession())
{
RavenQueryStatistics stats;
var query = db.Query<Club>()
.Statistics(out stats)
.Where(club => club.Type == "Amateur")
.Intersect()
.Search(club => club.Name, "Foo*", escapeQueryOptions: EscapeQueryOptions.AllowPostfixWildcard);
var clubs = query.ToList();
Assert.AreEqual(2, clubs.Count);
Assert.AreEqual(2, stats.TotalResults); // I expect 2 but was 3! Why is that?
}
}
[测试]
公共无效RavenQueryStatisticsTotalResultsTest1()
{
使用(var db=\u documentStore.OpenSession())
{
db.Store(新俱乐部{Name=“Foo1”,Type=“aftermal”});//-->匹配所有条件
db.商店(新俱乐部{Name=“Foo2”,Type=“Professional”});
db.Store(新俱乐部{Name=“Foo3”,Type=“业余”});//-->匹配所有条件
db.商店(新俱乐部{Name=“Boo1”,Type=“业余”});
db.商店(新俱乐部{Name=“Boo2”,Type=“Professional”});
db.SaveChanges();
}
WaitForIndexing(_documentStore);
使用(var db=\u documentStore.OpenSession())
{
拉文奎尔统计数据;
var query=db.query()
.统计数据(统计数据)
.Where(club=>club.Type==“业余”)
.Intersect()
.Search(club=>club.Name,“Foo*”,escapeQueryOptions:escapeQueryOptions.AllowPostfixWildcard);
var=query.ToList();
断言。相等(2,梅花。计数);
Assert.AreEqual(2,stats.TotalResults);//我希望2是3!为什么?
}
}
当使用多个where子句时,需要Intersect
。要将Where
和Search
组合在一起,您必须将Search选项传递给Search
:
使用(var db=\u documentStore.OpenSession()){
拉文奎尔统计数据;
var query=db.query()
.Customize(=>u.waitForNonSalesultsAsoflastWrite())
.统计数据(统计数据)
.Where(club=>club.Type==“业余”)
.搜索(
club=>club.Name,
“Foo*”,
escapeQueryOptions:escapeQueryOptions.AllowPostfixWildcard,
选项:搜索选项。和);
var=query.ToList();
断言。相等(2,梅花。计数);
Assert.AreEqual(2,stats.TotalResults);
}
你好,托马斯!谢谢你的回答。这是否意味着Intersect子句只能与Where子句一起使用,或者是否还有其他子句也可以使用它?Raven关于这个主题的文档非常少