如何重置mongodb聚合限制
来自mongodb游标限制的文档 limit()值为0(即limit(0))相当于设置no 限制 但我找不到在中重置查询限制的方法 我犯了一个错误 MongoError:限制必须为正如何重置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
谢谢回复 我编写了一个函数,用于重置聚合中的任何管道命令
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]);