【发布时间】:2012-02-25 18:43:58
【问题描述】:
在 RavenDB Studio 中,我可以看到 69 个 CustomVariableGroup 文档。我的查询只返回其中的 66 个。经过一番挖掘,我看到三个 not 返回的文档具有新的类结构:删除了一个属性。由于我保存了这三个 CustomVariableGroup 文档,它们的结构与其他 66 个不同。但是,当我查询所有这些文档时,为什么我只能得到其他 66 个具有旧结构的文档?
我的 C# 代码和我在 LinqPad 中的查询都只返回 66。这是 LinqPad 查询:
Session.Query<CustomVariableGroup>().Dump(); // returns 66 docs
但是,如果我这样做,我可以获得上述查询中缺少的三个文档之一:
Session.Query<CustomVariableGroup>().Where(x => x.Name == "Derating").Dump();
如何在一次查询中返回所有 69 个文档?
** 编辑:索引信息 **
在 LinqPad 查询的 SQL 选项卡中(以及在 Raven 服务器输出中),索引如下所示:
网址:/indexes/dynamic/CustomVariableGroups?query=&start=0&pageSize=128&aggregation=None
我在 Raven Studio 中没有看到该索引,大概是因为它是动态的。
** 编辑 2:此 HACK 有效 **
如果我这样做,我会得到所有 69 个文档:
Session.Query<CustomVariableGroup>().Where(x => x.Name != string.Empty).Dump();
我的猜测是,Raven 必须使用旧索引,该索引仅获取仍包含已删除列的文档。我不知何故需要使用新的/不同的索引...
有趣的是,这不起作用;它只返回 66:
Session.Query<CustomVariableGroup>().Where(x => x.Id != string.Empty).Dump();
** 编辑 3:此 HACK 也可以使用 **
Session.Advanced.LuceneQuery<CustomVariableGroup>("Raven/DocumentsByEntityName").Where("Tag:CustomVariableGroups").Dump();
【问题讨论】:
-
我会尝试制作你自己的地图(索引),看看你是否得到相同的结果。您可能还想将此问题发布到 RavenDB Google Group Ayende / 团队监控该组,并且很可能会快速回复。如果你找到答案把它发回这里,你会吗?我想知道你发现了什么...我对 RavenDB 还是很陌生。
-
我确实尝试了索引,但仍然只得到了 66 个文档。如果我在这里没有很快得到答案,我会尝试 google 组。是的,我也会在这里发布任何答案。谢谢!
标签: ravendb