gpt4 book ai didi

RavenDB 空间过滤器

转载 作者:行者123 更新时间:2023-12-04 08:14:57 28 4
gpt4 key购买 nike

帮助理解 RavenDB 查询,我使用以下模型来存储和索引空间数据。

public class GeoRecord {
public string SearchId {get; set;}
public string Tag {get; set;}
public double Latitude {get; set;}
public double Longitude {get; set;}
}


public class GeoRecord_GeoIndex : AbstractIndexCreationTask<GeoRecord>
{
public GeoRecord_GeoIndex()
{
Map = records => from @record in records
select new
{
IndexName = "geoIndex",
record.SearchId,
Coordinates = CreateSpatialField(@record.Latitude, @record.Longitude)
};
}
}
我可以使用如下所示的空间查询过滤所有 GeoRecord:
await session
.Query<GeoRecord, GeoRecord_GeoIndex>()
.Spatial("Coordinates", factory => factory.Within(shapeWkt: wkt))
.ToListAsync();
但是我想通过 SearchId 和 Coordinates 进行过滤,我得到了这个解决方案但是我想了解它是否使用 GeoRecord_GeoIndex 而不是过滤来自 GeoRecord 的结果。
await session.Advanced.AsyncDocumentQuery<GeoRecord, GeoRecord_GeoIndex>()
.WhereIn("SearchId", activeSearchIds)
.Intersect()
.Spatial("Coordinates", criteria => criteria.Within(shapeWkt:wkt))
.ToListAsync();

最佳答案

您正在查询索引 GeoRecord_GeoIndex ,它是用来过滤的。
A 静态索引包含:

  • Map 函数中指定的每个索引字段的索引术语列表,
    (您的索引字段是:IndexName、SearchId 和坐标)
  • 到相关文档的映射

  • 在查询时,索引项会根据您的查询进行过滤,并从数据库中获取相关文档
    一些演示链接:
    https://demo.ravendb.net/demos/csharp/static-indexes/map-index#step-3

    关于RavenDB 空间过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65749965/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com