【发布时间】:2019-08-14 14:23:18
【问题描述】:
我有一个包含 100 条记录的 MongoDB 集合,在 NodeJs 中我想检索为 10 条记录,每条记录包含 10 条记录,我该怎么做
【问题讨论】:
-
顺序是否重要,或者可能是某种分组方式?
-
顺序无关紧要,只需检索所有并分组而不重复
标签: javascript node.js mongodb
我有一个包含 100 条记录的 MongoDB 集合,在 NodeJs 中我想检索为 10 条记录,每条记录包含 10 条记录,我该怎么做
【问题讨论】:
标签: javascript node.js mongodb
如果您希望记录不同,您可以使用 Set 对象来帮助实现这一点。该函数接受一个获取项目键的函数,因此我们知道如何区分它们。
function groupByDistinct(records, groupSize, getKey) {
const set = new Set();
let result = [], current = [];
for (let i = 0, l = records.length; i < l; i++) {
const value = records[i], key = getKey(value);
if (set.has(key) {
continue;
}
set.add(key);
current.push(value);
if (current.length === groupSize) {
result.push(current);
current = [];
}
}
if (current.length !== 0) {
result.push(current);
}
return result;
}
示例用法
groupByDistinct(records, 10, x => x.key);
【讨论】: