V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zxCoder
V2EX  ›  问与答

一个 mongodb 的查询优化问题

  •  
  •   zxCoder · 2021-08-20 12:04:03 +08:00 · 583 次点击
    这是一个创建于 974 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想查询满足 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 左右,是哪里出问题了吗

    第 1 条附言  ·  2021-08-20 15:46:33 +08:00

    看来应该是mongodb cloud的坑了,送的这512MB空间,慢的一比,随便一个查询都要200ms以上,还以为可以搭个小应用。。。看来是没戏了

    2 条回复    2021-08-20 14:19:55 +08:00
    yxwzaxns
        1
    yxwzaxns  
       2021-08-20 13:51:28 +08:00
    试试不加索引需要多少时间?
    200 条数据可能体现不出索引的效果,有可能还有反效果?
    zxCoder
        2
    zxCoder  
    OP
       2021-08-20 14:19:55 +08:00
    @yxwzaxns 好像确实没起作用。。。没索引也是稳定 200ms,难道是 mongodb cloud 送的免费计划太坑了?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2834 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:19 · PVG 14:19 · LAX 23:19 · JFK 02:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.