在Ravendb中创建使对象数组可搜索的索引

在Ravendb中创建使对象数组可搜索的索引,ravendb,ravendb-studio,Ravendb,Ravendb Studio,在Raven中,我正在保存json文档,我希望创建一个索引,使json中的对象数组可以搜索。 下面的json结构就是一个例子 "OrderProperties": [ { "Key": "UserProfileType", "Value": "ClubMember" }, { "Key": "Fi

在Raven中,我正在保存json文档,我希望创建一个索引,使json中的对象数组可以搜索。 下面的json结构就是一个例子

"OrderProperties": [
    {
        "Key": "UserProfileType",
        "Value": "ClubMember"
    },
    {
        "Key": "FirstTimeReferer",
        "Value": "some value"
    }
]
我试着在raven studio中制作一个索引。首先,我试着做:

from doc in docs.WebOrderModels
select new {
    OrderProperties = doc.OrderProperties
}
这不起作用,所以我尝试了以下方法

from doc in docs.WebOrderModels
select new {
    OrderProperties_Key = doc.OrderProperties.Key,
    OrderProperties_Value = doc.OrderProperties.Value,
}
但是,这仍然会使对象未编入索引,因此我无法基于此筛选搜索。
有没有一种方法可以让我创建一个索引,使json中的键、值对可以搜索?

我发布这个答案是为了让它能够帮助其他人

我最终创建的索引如下所示:

from doc in docs.WebOrderModels
from prop in doc.OrderProperties
where prop.Key == "ShippingMethodAlias"
select new {
    Value = prop.Value
}
where语句是为了尽可能减少扇出。

我认为您是在寻找in索引,其思想是为字典和嵌套结构生成新的自定义索引术语

例如,生成的索引项(也称为动态字段)将是:

{
“OrderProperties\u UserProfileType”:“ClubMember”,
“OrderProperties\u FirstTimeReferer”:“某些值”
}
可以访问的

  • RQL
    中,作为索引“Y”中的
    ,其中OrderProperties\u UserProfileType='ClubMember'
    (看起来非常明显)
  • C#
    中作为
    s.Query().Where(p=>p.OrderProperties[“UserProfileType”].Equals(“ClubMember”)
    (将其用作字典)
下面是一篇关于这个主题的博客文章-。它有很多例子,你可以在GitHub上找到更多。

checkout