如何重置mongodb聚合限制
Posted
技术标签:
【中文标题】如何重置mongodb聚合限制【英文标题】:How to reset mongodb aggregation limit 【发布时间】:2016-05-26 13:05:44 【问题描述】:来自 mongodb 游标限制的文档
limit() 值为 0(即 .limit(0))相当于设置 no 限制。
但我找不到在mongodb aggregation limit docs 中重置查询限制的方法。
const listQuery = query.limit(20).exec(); // I need limit here
query.limit(0); // error here
const totalQuery = query.group(....).exec(); // No limit must be specified
我遇到错误
MongoError:限制必须是正数
感谢回复!
【问题讨论】:
【参考方案1】:我编写了从聚合中重置任何管道命令的函数
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]);
【讨论】:
以上是关于如何重置mongodb聚合限制的主要内容,如果未能解决你的问题,请参考以下文章