如何获取 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();