我一直在测试将我们的一个系统迁移到Marklogic 9并使用Optics API.
我们的一个功能涉及通过member_id,member_name对索赔进行分组并获取总和和计数,所以我做了类似这样的事情:
var results = op.fromView('test', 'claims')
.groupBy(['member_id', 'member_name'], [
op.count('num_claims', 'claim_no'),
op.sum('total_amount', 'claim_amount')
])
.orderBy(op.desc('total_amount'))
.limit(200)
.result()
.toArray();
Run Code Online (Sandbox Code Playgroud)
以上工作正常.结果是形式的
[
{
member_id: 1,
member_name: 'Bob',
num_claims: 10,
total_amount: 500
},
...
]
Run Code Online (Sandbox Code Playgroud)
但是,我们还有一个"公司"字段,每个索赔都是在另一家公司下提交的.基本上,相关的视图列是claim_no,member_id,member_name,company,claim_amount
我希望能够显示一个列,其中列出了member_id/member_name已提交索赔的不同公司,以及每个公司的索赔数量.
即我希望我的结果如下:
[
{
member_id: 1,
member_name: 'Bob',
num_claims: 10,
total_amount: 500,
companies: [
{
company: 'Ajax Co',
num_claims: 8
},
{
company: 'Side Gig',
num_claims: 2
}
]
},
...
]
Run Code Online (Sandbox Code Playgroud)
我试过这样的事情:
results = results.map((member, index, array) => {
var companies = op.fromView('test', …Run Code Online (Sandbox Code Playgroud) 我看到一些有关在Docker容器中运行markogic集群的文档,但不确定是否有人在Production中运行marklogic docker容器。
有人在docker容器中使用marklogic进行生产服务吗?
在我的项目中,我们有一个需要维护文档历史记录或版本的需求。就像我们使用相同的URI插入文档一样,它将旧文档替换为新文档。但是我们想保留旧版本号。
我们如何在Marklogic中实现这一目标?
因此,假设我已经升级了群集中的所有主机。现在,我需要升级安全性数据库。这是进行升级的部分吗?提交升级意味着什么?这是否意味着升级安全性数据库并检查已切换到较新版本的集群的有效版本?还是进行升级是完全不同的过程?
另外,是否可能其中一台主机上的软件版本未升级,而我们继续升级安全性数据库和配置。群集的有效版本是否仍将切换到较新版本?
以下是其中$p2的一个示例代码optional external parameter(即带有? modifier);传递给XDMP-ARG: -- vars is invalid时,代码会给出异常。empty sequence-()$p2
试穿了 Marklogic 8 & 9
let $query :=
"
declare variable $p1 as node()? external;
declare variable $p2 as node()? external;
(
if($p1) then xdmp:log('P1') else ()
,
if($p2) then xdmp:log('P2') else ()
)
"
let $p1 := <p></p>
let $p2 := ()
return
xdmp:eval(
$query,
(xs:QName('p1'), $p1, xs:QName('p2'), $p2)
)
Run Code Online (Sandbox Code Playgroud)
我希望代码能够运行并打印日志。我可以深入了解异常的发生方式吗?