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
}

我想查询所有没有设置属性的文档(最初,显然是所有文档)。然而,像这样的查询:

docs.Query<PaperSite>.Where( x => x.ParsedPaper == null)

什么也不返回。

Oren 暗示使用 contains,所以我创建了以下内容:

from site in docs.PaperSites
where site.Contains("ParsedPaper") == false
select new { PaperSite = site }

但是,这不会返回任何内容。

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

PaperSites/34 { "Title": "Paper Site Zero (v0)", "Html": null},
PaperSites/97 { "Title": "Paper Site Three", "Html": "<html></html>", "ParsedPaper": null }

以下索引:

from site in docs.PaperSites
where site.ParsedPaper == null
select new { PaperSite = site }

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

我对 Contains 做错了什么吗?如何调试这些索引?

最佳答案

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

您可以使用索引来做到这一点,例如:

from doc in docs
where doc.Contains("Description") == false
select new { doc.Id }

关于linq - 如何根据属性是否存在来查询 RavenDb 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9714027/

相关文章:

data-modeling - RavenDb 不同数据库实例包含

c# - 在 RavenDb 中映射减少 2 个带有子集合的集合

c# - 不能将 null 值分配给类型为 System.Boolean 的成员,该类型是不可为 null 的值类型

c# - 如何获得每个月的总和?

sql - COUNT(1) OVER() with Linq to Sql

mapreduce - RavenDB:为什么我在这个多映射/归约索引中得到字段的空值?

ravendb - 如何在 RavenDB 中跨多个数据库维护 IDocumentSession 范围?

c# - 将 OrderBy 应用于模型属性的 int 成员时会出现不正确的数据?

c# - 为什么我不应该总是使用 ICollection 而不是 IEnumerable?

recursion - RavenDB 和分层文档