在Ravendb中创建使对象数组可搜索的索引
在Raven中,我正在保存json文档,我希望创建一个索引,使json中的对象数组可以搜索。 下面的json结构就是一个例子在Ravendb中创建使对象数组可搜索的索引,ravendb,ravendb-studio,Ravendb,Ravendb Studio,在Raven中,我正在保存json文档,我希望创建一个索引,使json中的对象数组可以搜索。 下面的json结构就是一个例子 "OrderProperties": [ { "Key": "UserProfileType", "Value": "ClubMember" }, { "Key": "Fi
"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”:“某些值”
}
可以访问的
- 在
中,作为索引“Y”中的RQL
(看起来非常明显),其中OrderProperties\u UserProfileType='ClubMember'
- 在
中作为C#
(将其用作字典)s.Query().Where(p=>p.OrderProperties[“UserProfileType”].Equals(“ClubMember”)