rom*_*nio 2 collections json marklogic marklogic-8
我有几个这样的JSON:
[{
"type": "car",
"field1": "test"
}, {
"type": "bike",
"field1": "test"
}]
Run Code Online (Sandbox Code Playgroud)
我将它们存储在MarkLogic 8.4中,我想对它们执行一些搜索查询以根据类型检索文档(例如:查找类型为"car"的所有文档).
我有两个可能的解决方案:
在表现和/或最佳实践方面,一种方法是否优于另一种方法?
谢谢,罗曼.
尝试cts.jsonPropertyValueQuery:
cts.search(cts.jsonPropertyValueQuery("type", "car"))
Run Code Online (Sandbox Code Playgroud)
环球指数应该包含您需要的信息.
编辑以扩展我的答案:您提到的两种解决方案都需要存储其他信息.在所描述的情况下,通用索引已经拥有您需要的信息,使其成为首选解决方案.如果jsonPropertyValueQuery变得模棱两可,这种方法将不再是我的首选; 也就是说,如果type每个文档有多个属性.在这种情况下,查询将与任何type属性匹配.
如果是这种情况,在属性上放置JSON属性范围索引type将无济于事,因为范围索引仍将包含该type属性的所有实例.
要处理文档中的多种类型,您有两种选择:
在这两个中,我喜欢第一个.它很灵活 - 即使您的数据库中包含不同结构的文档,也可以使用它.通过这种方式,它可以"未来证明"您的项目.权衡是您的代码在进行插入时需要管理文档的集合.尽管如此,这很简单.
在性能方面,这些方法中的任何一种都可以很好地处理查询,但是在索引编制期间,选项二将会有更多的工作要做.MarkLogic需要检查文档中是否存在已配置的路径,如果存在,则相应地更新索引.这是一个微小的差异,但有可能加起来.