如何使 cloudantDb.search return 所有记录而不是限制 25 和书签

How make cloudantDb.search return all records instead of limit 25 and bookmark

我正在尝试使用搜索索引来加快搜索速度。这是我的代码:

return new Promise((resolve, reject) => {
  let conf = {'include_docs': true}
  conf.q = "user: 'new'";

  db.search('app', 'userIndex', conf, (err, body) => {
    if (!err) {
      console.log('success');
      resolve({status: 'Success', response: {userDocs: body.total_rows}});
    } else {
      console.log('error');
      resolve({ status: 'Failure', response: { Error: err } });
    }
  });
});

它工作正常,但 return 只有 25 个文档(有数百个)和书签。 有没有办法搜索 return 所有文档,而不是为每个书签调用新的承诺。如果我浏览所有书签,它的工作速度甚至比 .find() 方法还要慢。

db.search 函数对 Cloudant Search 索引进行查询。 Cloudant Search 是一个基于 Apache Lucene 的索引系统,用于自由文本搜索,每次搜索最多返回 200 个文档。如果结果集超过 200 个文档,搜索结果集将包含一个 "bookmark",可以在后续请求中将其传递给 Cloudant 以获取下一个搜索结果块。

db.find 函数对 Cloudant Query 索引进行查询。 Cloudant Query 是一种通用查询语言,类似于 MongoDB 的查询语法。搜索结果集限制为 25 个(默认情况下),但最多可以覆盖 200 个文档。同样,书签系统允许对结果集进行分页。

例如

const q = { 
  selector: {
    name: { "$eq": "Brian"},
    age : { "$gt": 25 }
  },
  fields: [ "name", "age", "tags", "url" ]
  limit:200
};
mydb.find(q).then((data) => {
  console.log(data);
});

通过定义 MapReduce 视图可以在单个 API 调用中返回更大的数据集,这些视图可以是使用 db.view 函数查询具有较大 "limit" 值的查询.