栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用于深度嵌套JSON的Cloudant / Mango选择器

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用于深度嵌套JSON的Cloudant / Mango选择器

使用Cloudant Query(Mango)选择器语句,您仍然需要在查询之前定义适当的索引。考虑到这一点,这是您的答案:

json型CQ索引

{  "index": {    "fields": [      "what_i_want.is_down_here.0"    ]  },  "type": "json"}

针对JSON类型索引的选择器

{  "selector": {    "what_i_want.is_down_here.0": {      "i_look_for": "this_tag"    },    "what_i_want.is_down_here.0.tag_properties": {      "$exists": true    }  },  "fields": [    "_id",    "what_i_want.is_down_here.0.tag_properties"  ]}

上面的解决方案假定您始终知道/可以保证所需的字段在

is_down_here
数组的第0个元素内。

还有另一种方法可以使用不同的CQ索引类型来回答此问题。本文介绍了这些差异,并提供了一些有用的示例来显示查询数组。现在,您对不同的索引类型有了更多的了解,下面是使用Lucene搜索/“文本”类型的CQ索引回答问题的方法:

文字型CQ索引

{  "index": {    "fields": [      {"name": "what_i_want.is_down_here.[]", "type": "string"}    ]  },  "type": "text"}

针对文本类型索引的选择器

{  "selector": {    "what_i_want.is_down_here": {      "$and": [        {"$elemMatch": {"i_look_for": "this_tag"}},        {"$elemMatch": {"tag_properties": {"$exists": true}}}      ]    }  },  "fields": [    "_id",    "what_i_want.is_down_here"  ]}

阅读本文,您将了解每种方法都有其权衡因素:json类型的索引更小,更不灵活(只能索引特定元素);文本类型更大但更灵活(可以索引所有数组元素)。从该示例中,您还可以看到,投影值还具有一些折衷(投影特定值与整个数组)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/430765.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号