【问题标题】:Retrieve data as group in nodejs [duplicate]在nodejs中检索数据作为组[重复]
【发布时间】:2019-08-14 14:23:18
【问题描述】:

我有一个包含 100 条记录的 MongoDB 集合,在 NodeJs 中我想检索为 10 条记录,每条记录包含 10 条记录,我该怎么做

【问题讨论】:

  • 顺序是否重要,或者可能是某种分组方式?
  • 顺序无关紧要,只需检索所有并分组而不重复

标签: javascript node.js mongodb


【解决方案1】:

如果您希望记录不同,您可以使用 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);

【讨论】:

  • 谢谢,有什么办法可以通过 MongoDB 查询来完成
  • @veeRN - 我确实假设您已经提取了数据。老实说,在 MongoDB 中一定有办法做到这一点。
  • 好的,数据可以增长到 30000 条记录,我不想通过 30000 条记录并将其按 10 或 100 分组,寻找一些方法将数据检索为一组 10 或100个
  • @veeRN - 30k 还不错,300k 可能是个问题。您需要某种窗口函数来执行此操作,但我不熟悉 MongoDB 中可用的所有内容。我们都必须点击文档。
  • @veeRN - 我说两个都试一试,但谁知道你很快就会得到一个 MongoDB 专业人士。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-29
  • 1970-01-01
  • 2015-09-16
  • 2017-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多