RavenDB:如何转换会话.查询会话.高级文档查询

本文关键字:查询 会话 高级 文档 转换 何转换 RavenDB | 更新日期: 2023-09-27 18:28:01

我将以下类的对象存储在ravendb数据库中:

public class Continent
{
public string Name { get; set; }
public List<Country> Countries{ get; set; }
}
public class Countries
{
public string Name { get; set; }
public List<Province> Provinces{ get; set; }
}
public class Province
{
public string Name { get; set; }
public List<Province> Cities { get; set; }
}
public class City
{
public string Name { get; set; }
public string Address   { get; set; }
}

感谢一篇帖子(RavenDB:如何检索嵌套集合中的顶部节点?)我学会了如何使用会话。查询以从数据库中检索名称和地址分别设置为"aloma"answers"123"的所有大陆。我想使用会话编写相同的查询。Advanced.DocumentQuery。所以你能告诉我如何将以下查询转换为会话吗。Advanced.DocumentQuery:var大陆=会话。Query()。Where(x=>x.国家。任意(国家=>国家。省份。任意(p=>p.Cities.Any(城市=>城市。名称="123"&&城市。地址="aloma"))。OfType().ToList()?

RavenDB:如何转换会话.查询会话.高级文档查询

注意,这可能不是最好的方法,但这是我知道的唯一方法。此外,请注意,一旦执行以下操作,将创建一个索引。

var results = session.Advanced.DocumentQuery<Continent>().Where("Countries,Provinces,Cities,Name: 123 AND Countries,Provinces,Cities,Address: aloma").ToList();

使用的模型结构:

    public class Continent
{
    public string Id { get; set; }
    public string Name { get; set; }
    public List<Country> Countries { get; set; }
}
public class Country
{
    public string Name { get; set; }
    public List<Province> Provinces { get; set; }
}
public class Province
{
    public string Name { get; set; }
    public List<City> Cities { get; set; }
}
public class City
{
    public string Name { get; set; }
    public string Address { get; set; }
}