查找MongoDB集合中的所有文档需要很长时间

时间:2018-05-21 01:06:13

标签: java mongodb performance

我的数据库中有这个空集合,我刚刚开始工作(显然),我有日志消息,打印出循环遍历此集合中所有文档所需的时间。问题是即使作为一个空集合,它总是需要约100毫秒才能完成所有这些集合的加载。这只发生在一个集合而不是我的另一个集合(见截图)https://prnt.sc/jkg428

这是我加载帮派的代码

private void loadGangs() {
    long now = System.currentTimeMillis();
    int amount = 0;

    for (Document document : gangsCollection.find()) {
        loadGang(document);
        amount++;
    }

    Core.log("Loaded &e" + amount + " &fgang" + (amount == 1 ? "" : "s") + " in &e" + (System.currentTimeMillis() - now) + "ms.");
}

private void loadGang(Document document) {
    Gang gang = new Gang(document.getString("_id"), UUID.fromString(document.getString("leader")));

    List<UUID> members = Lists.newArrayList();

    for (String uuidAsString : (ArrayList<String>) document.get("members")) {
        members.add(UUID.fromString(uuidAsString));
    }

    gang.setMembers(new HashSet<>(members));
}

这是我加载帐户的代码

private void loadAccounts() {
    long now = System.currentTimeMillis();
    int amount = 0;

    for (Document document : accountsCollection.find()) {
        loadAccount(document);
        amount++;
    }

    Core.log("Loaded &e" + amount + " &faccount" + (amount == 1 ? "" : "s") + " in &e" + (System.currentTimeMillis() - now) + "ms.");
}

private void loadAccount(Document document) {
    Account account = new Account(UUID.fromString(document.getString("_id")));

    if (document.containsKey("gang")) {
        account.setGang(Gang.getGang(document.getString("gang")));
    }
}

在查询时两者都相对相似但是加载帮派花费的时间比加载帐户要多得多,即使两个收集都是空的。我该怎么办? 感谢。

编辑/旁注:一切都很完美,我只关注这里的表现,尤其是当有1000多个不同的帐户和/或帮派的时候。

0 个答案:

没有答案