V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
anthoy
V2EX  ›  MongoDB

spring-data-mongodb 聚合问题

  •  
  •   anthoy · 2021-05-22 17:43:16 +08:00 · 1728 次点击
    这是一个创建于 1313 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在 spring-data-mongodb 中使用聚合,目的是实现查询下面数据

    {
        "name":"test1",
        "receivedDate":"2021-05-18 00:00:52",
    }
    {
        "name":"test2",
        "receivedDate":"2021-05-18 00:00:52",
    }
    {
        "name":"test3",
        "receivedDate":"2021-05-18 00:00:52",
    }
    {
        "name":"test4",
        "receivedDate":"2021-05-18 00:00:52",
    }
    

    目标是通过聚合查询出来结果如下:

    {
    	"name":["test1","test2","test3","test4"],
    }
    

    1

    目前使用方式是这样子

    GroupOperation group = Aggregation.group().push("name").as("name");
    

    查询结果

    [
        {
            "_id": null,
            "name": [
                "test1",
                "test2",
                "test3",
                "test4",
                "test4"
            ]
        }
    ]
    

    2

    但我修改为使用动态添加的时候

            GroupOperation group = Aggregation.group();
            for (int i = 0; i < params.length; i++) {
                group.push(params[i]).as(params[i]);
            }
    

    发现查询的结果为

    [
        {
            "_id": null
        }
    ]
    

    感觉动态 push 哪里并没有生效,查询了挺多的资料好像也没有找到,感觉使用人挺少的

    • 有没有大佬知道应该怎么写的?
    • 或者还有别的方式实现
    • 或者自己遍历会不会比使用聚合这个更加好?
    3 条回复    2021-05-24 12:05:15 +08:00
    uselessVisitor
        1
    uselessVisitor  
       2021-05-22 18:35:09 +08:00
    有啥好的教程吗?之前用 GridFS 传文件,网上教程各种方法过时,还是自己摸索的用 GridBucket 实现的
    acr0ss
        2
    acr0ss  
       2021-05-23 12:43:28 +08:00
    可以打印 query,或者断点查看 query,明确语句是否正确。
    FEINIAO233
        3
    FEINIAO233  
       2021-05-24 12:05:15 +08:00   ❤️ 1
    动态添加里 写成 group = group.push(params[i]).as(params[i]); 就好了,我看了一下源码,push 函数里新建了一个 GroupOperation 对象,不是在本来的对象上操作的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1090 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:58 · PVG 02:58 · LAX 10:58 · JFK 13:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.