我将如何查询键以使其部分匹配?
How would I query keys such that it would partially match?
我们以这份文件为例:
{
"id":1
"planet":"earth-616"
"data":[
["wolverine","mutant"],
["Storm","mutant"],
["Mark Zuckerberg","human"]]
}
我创建了一个搜索索引来索引名称和类型,例如,如果搜索 name:wolverine 或 type:mutant,我会得到包含它的文档。但是根据我的要求 我不想要整个文档,我只想要 ["wolverine","mutant"]
我创建了一个输出为的视图:
{
"id":1,
"key":"earth-616",
"value":["earth-616","wolverine","mutant"]
}
然后我发现我只能用键查询。 (是否可以在视图上创建搜索索引?,在文档中找不到任何内容)
或者我应该像这样创建视图和上面的视图:
{
"id":1,
"key":"wolverine",
"value":["earth-616","wolverine","mutant"]
}
和
{
"id":,
"key":"mutant"
"value":["earth-616","wolverine","mutant"]
}
这样我可以查询我想要的键,但我似乎无法部分匹配键(我错过了什么吗?)
如果您需要输出与描述的完全一致,那么我相信您必须使用视图,并且为了支持通配符搜索,我相信您必须为键的每个子字符串编制索引。
一种替代方法是使用 Cloudant Query,尽管不可否认您无法获得所需的确切输出。如果您发出这样的查询:
{
"selector": {
"_id": {
"$gt": 0
},
"data": {
"$elemMatch": {
"$elemMatch": {
"$regex": "(?i)zuck"
}
}
}
},
"fields": [
"data"
]
}
结果将是整个数据数组:
{
"data": [
["wolverine", "mutant"],
["Storm", "mutant"],
["Mark Zuckerberg", "human"]
]
}
我们以这份文件为例:
{
"id":1
"planet":"earth-616"
"data":[
["wolverine","mutant"],
["Storm","mutant"],
["Mark Zuckerberg","human"]]
}
我创建了一个搜索索引来索引名称和类型,例如,如果搜索 name:wolverine 或 type:mutant,我会得到包含它的文档。但是根据我的要求 我不想要整个文档,我只想要 ["wolverine","mutant"]
我创建了一个输出为的视图:
{
"id":1,
"key":"earth-616",
"value":["earth-616","wolverine","mutant"]
}
然后我发现我只能用键查询。 (是否可以在视图上创建搜索索引?,在文档中找不到任何内容) 或者我应该像这样创建视图和上面的视图:
{
"id":1,
"key":"wolverine",
"value":["earth-616","wolverine","mutant"]
}
和
{
"id":,
"key":"mutant"
"value":["earth-616","wolverine","mutant"]
}
这样我可以查询我想要的键,但我似乎无法部分匹配键(我错过了什么吗?)
如果您需要输出与描述的完全一致,那么我相信您必须使用视图,并且为了支持通配符搜索,我相信您必须为键的每个子字符串编制索引。
一种替代方法是使用 Cloudant Query,尽管不可否认您无法获得所需的确切输出。如果您发出这样的查询:
{
"selector": {
"_id": {
"$gt": 0
},
"data": {
"$elemMatch": {
"$elemMatch": {
"$regex": "(?i)zuck"
}
}
}
},
"fields": [
"data"
]
}
结果将是整个数据数组:
{
"data": [
["wolverine", "mutant"],
["Storm", "mutant"],
["Mark Zuckerberg", "human"]
]
}