一个 mongodb 的查询优化问题

2021-08-20 12:04:03 +08:00
 zxCoder

想查询满足 a,b,c,d 四个条件(加了组合索引),然后按 username 分组,求组的数量。

let cnt = await Game.aggregate([
        {
            $match: {
                a,
                b,
                c,
                d,
            }
        },
        {
            $group: {
                _id:"$username",
            }
        },
        {
            $count: "cnt",
        }
    ]);

使用的是 mongoose 创建组合索引

GameSchema.index({a:1,b:1,c:1,d:1});

现在大约才 200 条数据,这个查询要 200ms 左右,是哪里出问题了吗

586 次点击
所在节点    问与答
2 条回复
yxwzaxns
2021-08-20 13:51:28 +08:00
试试不加索引需要多少时间?
200 条数据可能体现不出索引的效果,有可能还有反效果?
zxCoder
2021-08-20 14:19:55 +08:00
@yxwzaxns 好像确实没起作用。。。没索引也是稳定 200ms,难道是 mongodb cloud 送的免费计划太坑了?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/796982

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX