gpt4 book ai didi

c# - 跨多个嵌套属性的ravendb索引

转载 作者:行者123 更新时间:2023-12-02 11:13:53 26 4
gpt4 key购买 nike

我问如何根据文档上两个不同的嵌套属性创建索引。我通过 C# 执行这些查询。

public class LocationCode
{
public string Code {get;set;}
public string SeqId {get;set;}
}

public class ColorCode
{
public string Code {get;set;}
public string SeqId {get;set;}
}

public class TestDocument
{
public int Id {get;set;}
public List<LocationCode> Locations { get; set; }
public List<ColorCode> Colors { get; set; }
}

我尝试过各种AbstractIndexCreationTask、Map和Map+Reduce,但没有效果。

我希望能够执行如下查询:

获取任何 Locations.Code 属性为“USA”、和/或 Colors.Code="RED"或 SeqId 属性的所有文档。我不知道这是否意味着我需要多个索引。通常,我要么比较两个嵌套类的 Code 属性,要么比较 Seq,但永远不会混合。

请有人指出我正确的方向。

非常感谢菲尔

最佳答案

像这样创建索引:

public class TestIndex : AbstractIndexCreationTask<TestDocument, TestIndex.IndexEntry>
{
public class IndexEntry
{
public IList<string> LocationCodes { get; set; }
public IList<string> ColorCodes { get; set; }
}

public TestIndex()
{
Map = testDocs =>
from testDoc in testDocs
select new
{
LocationCodes = testDoc.Locations.Select(x=> x.Code),
ColorCodes = testDoc.Colors.Select(x=> x.Code)
};
}
}

然后像这样查询:

var q = session.Query<TestIndex.IndexEntry, TestIndex>()
.Where(x => x.LocationCodes.Any(y => y == "USA") &&
x.ColorCodes.Any(y => y == "RED"))
.OfType<TestDocument>();

Full unit test here .

关于c# - 跨多个嵌套属性的ravendb索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20882630/

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