marklogic - 如何在 MarkLogic javascript 中实现 SQL 查询?
问题描述
我有一个SQL
要Javascript
在 MarkLogic 中以查询类型实现的查询。目标是返回所有URIs
的查询结果。
下面是我要转换的 SQL 查询:
SELECT * FROM DOCUMENT_TABLE
WHERE WADCTO IN ('WM', 'WO')
AND (WASRST NOT IN ('02', 'M', 'M9')) AND (WASTRX = 0)
这是我在查询控制台中测试的当前 Javascript 查询,但返回的行数与 SQL 查询不同:
cts.uris(null, null,
cts.andQuery([
cts.collectionQuery("JDEdwards"),
cts.collectionQuery("WorkOrder_Document"),
cts.andQuery([
cts.orQuery([
cts.elementRangeQuery(fn.QName("http://www.example.com/ads/JDEdwards/document", "WADCTO"),"=","WO"),
cts.elementRangeQuery(fn.QName("http://www.example.com/ads/JDEdwards/document", "WADCTO"),"=","WM")
]),
cts.andQuery([
cts.elementRangeQuery(fn.QName("http://www.example.com/ads/JDEdwards/document", "WASRST"),"!=","02"),
cts.elementRangeQuery(fn.QName("http://www.example.com/ads/JDEdwards/document", "WASRST"),"!=","M"),
cts.elementRangeQuery(fn.QName("http://www.example.com/ads/JDEdwards/document", "WASRST"),"!=","09")
]),
cts.elementRangeQuery(fn.QName("http://www.example.com/ads/JDEdwards/document", "WASTRX"),"=","0")
])
])
);
请注意,我为元素设置了范围索引WADCTO
,WASRST
和WASTRX
。
我的代码逻辑有什么遗漏或错误吗?
解决方案
范围查询可以指定与 OR 相关的值列表。此外,cts.notQuery()
可以否定查询。可能类似于以下草图的东西可能会更接近。
cts.uris(null, null,
cts.andQuery([
cts.collectionQuery("JDEdwards"),
cts.collectionQuery("WorkOrder_Document"),
cts.elementRangeQuery(fn.QName("...", "WADCTO"),"=", ["WO", "WM"]),
cts.notQuery(
cts.elementRangeQuery(fn.QName("...", "WASRST"),"=", ["02", "M", "09"])
),
cts.elementRangeQuery(fn.QName("...", "WASTRX"),"=", "0")
]);
要检查的事情包括
- 目标文档是否在两个集合中
- 命名空间对于元素是否正确
- 范围索引是否具有字符串数据类型(WASTRX 在 SQL 版本的查询中是一个数字)
如果一切都失败了,请尝试删除查询子句,直到查询可以找到有问题的查询子句。
希望有帮助,
推荐阅读
- python - 无法回答 Python 语法挑战
- visual-studio-2019 - 在 Mac 上的 Parallels/Windows10 中使用 Visual Studio 2019 找不到参考
- python - FFMPEG 命令在以下代码中如何工作?
- c++ - 使用 Ansys Scade Suite 将 float32 转换为 char[255]
- deep-learning - 在两个特征向量上训练网络?
- angular - 从弃用的 TSlint 迁移到 ESLint 后,哪个 ESLint 样式指南最接近 TSLint?
- windows - Microsoft 掌握:GetGroupFromIdS2SRequest。工作负载 MsGraph_DirectoryServices
- google-analytics - iFrame 中的 Google Analytics(分析)
- postgresql - ST_Intersects 对不相交的地理位置返回 true
- jenkins - 当特定文件夹中的文件发生更改时触发多分支管道