Linq 如何基于属性的存在查询RavenDb文档

Linq 如何基于属性的存在查询RavenDb文档,linq,ravendb,Linq,Ravendb,使用准确的类别和数据进行更新 我有一个具有新属性的文档的新版本: public class PaperSite { public string Title { get; set; } public string Html { get; set; } public ParsedPaper ParsedPaper { get; set; } // This is a new property } 我想查询所有没有属性集的文档(最初,显然是所有文档)。但是,类似这样的查询:

使用准确的类别和数据进行更新

我有一个具有新属性的文档的新版本:

public class PaperSite
{
    public string Title { get; set; }
    public string Html { get; set; }
    public ParsedPaper ParsedPaper { get; set; } // This is a new property
}
我想查询所有没有属性集的文档(最初,显然是所有文档)。但是,类似这样的查询:

docs.Query<PaperSite>.Where( x => x.ParsedPaper == null)
然而,这不会返回任何结果

在数据库中,我有以下文档(及更多):

返回正确的文档(存在ParsedPaper但为空的文档)


我是不是有什么问题?如何调试这些索引?

您不能执行这样的查询,因为您要求的是所有具有此属性并将其设置为null的文档

您可以使用索引执行此操作,例如:

from doc in docs
where doc.Contains("Description") == false
select new { doc.Id }
where
子句中使用
.Contains(“…”)
,对我也不起作用。我使用以下索引定义解决了查找缺少属性的文档的问题:

from doc in docs.MyDocType
where(doc.Description == null)
select new { doc.Id }

随后,我现在可以通过
UpdateByIndex
使用此索引来运行
PatchRequest
脚本来修复丢失的属性。

这似乎是一个明智的解决方案,至少在考虑迁移和维护“模式”Oren时,我无法让“包含”起作用。我不知道如何调试这个。有什么提示吗?
from site in docs.PaperSites
where site.ParsedPaper == null
select new { PaperSite = site }
from doc in docs
where doc.Contains("Description") == false
select new { doc.Id }
from doc in docs.MyDocType
where(doc.Description == null)
select new { doc.Id }