sql - TDE - 删除列名中的架构名称和视图名称
问题描述
我正在尝试为 Marklogic DB 中的 XML 文档创建一个简单的 SQL TDE 模板。
样本模板:
<template xmlns="http://marklogic.com/xdmp/tde">
<context>/match</context>
<collections>
<collection>source1</collection>
</collections>
<rows>
<row>
<schema-name>soccer</schema-name>
<view-name>matches</view-name>
<columns>
<column>
<name>id</name>
<scalar-type>long</scalar-type>
<val>id</val>
</column>
<column>
<name>document</name>
<scalar-type>string</scalar-type>
<val>docUri</val>
</column>
<column>
<name>date</name>
<scalar-type>date</scalar-type>
<val>match-date</val>
</column>
<column>
<name>league</name>
<scalar-type>string</scalar-type>
<val>league</val>
</column>
</columns>
</row>
</rows>
</template>
我在内容数据库中插入了一个示例文档,并将上述模板插入到 Schemas 数据库中。
现在我正在尝试使用 XQuery 运行 SQL 查询,如下所示:
xdmp:sql("select * from matches","map")
上面的查询返回下面的响应
足球比赛.id | 足球比赛文件 | 足球比赛日期 | 足球比赛联赛 |
---|---|---|---|
1234567 | /soccer/match/1234567.xml | 2016-01-12 | 总理 |
在json格式中,
[
{
"soccer.matches.id": 1234567,
"soccer.matches.document": "/soccer/match/1234567.xml",
"soccer.matches.date": "2016-01-12",
"soccer.matches.league": "Premier"
}
]
在上面的响应中,键名返回为 schema-name.view-name.column_name.Eg,soccer.matches.id 但我需要键名只有列名。例如,“id”:1234567
任何人都可以分享在 XQuery 中实现这一目标的最简单方法吗?
解决方案
您可能可以使用 AS 在 SQL 语句中设置名称。您始终可以遍历 FLWOR 语句中的结果来修改您的结果。
但是,我建议您使用 optic API 并根据需要调整结果。
使用 anop:from-view
将是建议的行动方案。你仍然可以使用op:from-sql()
. 在这两种情况下,尝试使用 qualifier 参数,包括省略它。对于最终结果,您可以使用op:as()
withop:select()
或op:group-by()
来准确定义您想要的结果。
光学 API 参考:https ://docs.marklogic.com/guide/app-dev/OpticAPI
推荐阅读
- html - 在子组件中向上滚动时会触发离子刷新器
- android - 使用 PowerMockito 测试 Android 原生代码
- c# - .net 核心应用程序在 docker 容器中的内存快照
- knex.js - 如何从 objection.js 中获取所有行
- javascript - 为制表器创建一个完全自定义的分页组件
- c# - 是否可以通过从 Startup.cs 中的 DbContext 获取值来设置 Cookie ExpireTimeSpan?
- react-native - 风格可能是假的,但不是真的 galio.io
- android - FusedLocationApi.getLastLocation 在后台始终为空
- ruby - 将正整数转换为负整数
- python - 来自 sympy 的命令 linsolve 或求解无法求解一维线性方程