如何重置mongodb聚合限制

如何重置mongodb聚合限制,mongodb,mongoose,mongodb-query,aggregation-framework,Mongodb,Mongoose,Mongodb Query,Aggregation Framework,来自mongodb游标限制的文档 limit()值为0(即limit(0))相当于设置no 限制 但我找不到在中重置查询限制的方法 我犯了一个错误 MongoError:限制必须为正 谢谢回复 我编写了一个函数,用于重置聚合中的任何管道命令 Aggregate.prototype.reset = function (command, onlyLatest) { command = command.replace(/^/, '$'); let i = this._pipeline.le

来自mongodb游标限制的文档

limit()值为0(即limit(0))相当于设置no 限制

但我找不到在中重置查询限制的方法

我犯了一个错误

MongoError:限制必须为正


谢谢回复

我编写了一个函数,用于重置聚合中的任何管道命令

Aggregate.prototype.reset = function (command, onlyLatest) {
  command = command.replace(/^/, '$');
  let i   = this._pipeline.length;
  while (i--) {
    if (command === Object.keys(this._pipeline[i])[0]) {
      this._pipeline.splice(i, 1);
      if (onlyLatest) {
        break;
      }
    }
  }
  return this;
};
例如,在进行分页时非常有用

  var query = this.aggregate();
  query.match({ ... });
  query.lookup({ ... });
  query.unwind({ ... });
  query.project({ ... });
  query.sort(...);
  query.skip();
  query.limit(10);

  const listQuery  = query.exec();
  const totalQuery = query.reset('limit').reset('skip').exec();

  return Promise.all([listQuery, totalQuery]);
  var query = this.aggregate();
  query.match({ ... });
  query.lookup({ ... });
  query.unwind({ ... });
  query.project({ ... });
  query.sort(...);
  query.skip();
  query.limit(10);

  const listQuery  = query.exec();
  const totalQuery = query.reset('limit').reset('skip').exec();

  return Promise.all([listQuery, totalQuery]);