我将xml和json文档存储在数据库中。我的用例是我需要获取其文档创建日期可以说的所有文档> (T-2),T为当前日期。 因此,我在文档元数据中添加了文档创建日期和一些其他文档属性。我可以插入和检索文档所需的所有属性。但是我们可以在元数据属性上执行日期范围搜索吗?
我正在使用StructuredQueryBuilder并且它具有属性方法,我在其中输入属性名称以获取其值,但不知道如何将其转换为范围搜索。
答案 0 :(得分:2)
通常建议您尽可能避免文档属性。查询文档及其属性需要在两个单独的片段(MarkLogic中的存储单元)之间进行连接。连接很昂贵,特别是在规模上。您应该将元数据放在文档中。如果您需要将其与主要内容隔离,则可以创建信封包装。例如,包装表示Customer实体的文档
{
"metadata": {
"createDate": …,
"author": …,
"hash": …,
…
},
"contents": {
"customer": {
…
}
}
}
以上是JSON,但您也可以使用相同的XML技术。
答案 1 :(得分:1)
作为替代方案,您可以选择使用隐藏的元数据字段,这是MarkLogic 9中的新功能。您创建的元数据字段仅指定属性的名称,然后创建类型字段范围索引。您可以将它们用作任何其他字段,但这些元数据字段的值不会显示为文档的一部分,即使它们内部绑定到文档片段以获得最佳性能。您可以使用xdmp:document-set-metadata
之类的命令来设置值,还可以通过MarkLogic REST API的/v1/documents
端点执行此操作。
HTH!