删除了属性的RavenDB查询文档

时间:2012-02-25 18:43:59

标签: ravendb

在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服务器输出中),索引如下所示:

网址:/ indices / dynamic / CustomVariableGroups?query =&amp; start = 0&amp; pageSize = 128&amp; 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();

3 个答案:

答案 0 :(得分:2)

必须删除包含旧属性的索引。

**之前**这不起作用(仅退回69份文件中的66份):

Session.Query<CustomVariableGroup>().Dump();

**修复**删除使用从我的C#类中删除的旧属性的索引:

在Raven Studio中,我删除了这个索引:Auto / CustomVariableGroups / ByApplicationId

** **之后同样的查询现在返回所有69个文档:

Session.Query<CustomVariableGroup>().Dump();

现在,我不确定为什么这些查询会使用该索引。我正在查询所有CustomVariableGroup文档,而不是ByApplicationId。但是,删除该索引会修复它。我相信别人可以解释原因。

答案 1 :(得分:0)

索引是什么样的?您是手动创建索引还是动态创建索引?根据您上面的评论,只是想知道这是否是问题的原因,对象的结构发生了变化。

- S

答案 2 :(得分:0)

它可能是陈旧的索引..如果它没有返回你期望的所有结果。

您可以使用

.Customize(x =&gt; x.WaitForNonStaleResultsAsOfLastWrite())