如何获取 Marklogic optical api 搜索中的文档总数?
How to get total number of documents in Marklogic optic api search?
使用 marklogic optical 时如何计算或估计结果数 api。
var results = op.fromView('x', 'y')
.where() <- I need to count all results from view after where.
.limit(200)
.result()
.toArray();
作为回应,我很乐意实现这样的目标:
var count = cts.estimate(query);
var items = fn.subsequence(search, 1, 20).toObject();
{ items: items; count: count }
注意:文档和结果之间的关系取决于您创建 TDE 模板的方式。某些模板实际上可能会从单个文档中创建许多行。我将假设您与文档相关的标题应该是“结果”而不是文档,因为您在实际问题中引用了“结果”。
对于你想要做的事情,我会使用 op.groupBy()
独立示例:
const op = require('/MarkLogic/optic');
op.fromLiterals([
{row:1, val:2},
{row:1, val:4},
{row:2, val:3},
{row:2, val:5},
{row:2, val:7}
])
.groupBy([],op.count('count', 'row')).result()
结果:{"count":5}
groupBy()
语句中的空数组的原因是说按所有内容分组(通过不将列传递给分组依据)
我想以 David Ennis 的回答为基础,因为您希望获得总数和结果。这是您需要做的两件不同的事情,但看起来像这样:
let myView =
op.fromView('x', 'y')
.where(conditions);
let total = fn.head(myView.groupBy(null, op.count('total')).result()).total;
let results =
myView
.limit(200)
.result()
.toArray();
使用 marklogic optical 时如何计算或估计结果数 api。
var results = op.fromView('x', 'y')
.where() <- I need to count all results from view after where.
.limit(200)
.result()
.toArray();
作为回应,我很乐意实现这样的目标:
var count = cts.estimate(query);
var items = fn.subsequence(search, 1, 20).toObject();
{ items: items; count: count }
注意:文档和结果之间的关系取决于您创建 TDE 模板的方式。某些模板实际上可能会从单个文档中创建许多行。我将假设您与文档相关的标题应该是“结果”而不是文档,因为您在实际问题中引用了“结果”。
对于你想要做的事情,我会使用 op.groupBy()
独立示例:
const op = require('/MarkLogic/optic');
op.fromLiterals([
{row:1, val:2},
{row:1, val:4},
{row:2, val:3},
{row:2, val:5},
{row:2, val:7}
])
.groupBy([],op.count('count', 'row')).result()
结果:{"count":5}
groupBy()
语句中的空数组的原因是说按所有内容分组(通过不将列传递给分组依据)
我想以 David Ennis 的回答为基础,因为您希望获得总数和结果。这是您需要做的两件不同的事情,但看起来像这样:
let myView =
op.fromView('x', 'y')
.where(conditions);
let total = fn.head(myView.groupBy(null, op.count('total')).result()).total;
let results =
myView
.limit(200)
.result()
.toArray();