spring-data-mongodb 聚合问题

2021-05-22 17:43:16 +08:00
 anthoy

我在 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 哪里并没有生效,查询了挺多的资料好像也没有找到,感觉使用人挺少的

1519 次点击
所在节点    MongoDB
3 条回复
uselessVisitor
2021-05-22 18:35:09 +08:00
有啥好的教程吗?之前用 GridFS 传文件,网上教程各种方法过时,还是自己摸索的用 GridBucket 实现的
acr0ss
2021-05-23 12:43:28 +08:00
可以打印 query,或者断点查看 query,明确语句是否正确。
FEINIAO233
2021-05-24 12:05:15 +08:00
动态添加里 写成 group = group.push(params[i]).as(params[i]); 就好了,我看了一下源码,push 函数里新建了一个 GroupOperation 对象,不是在本来的对象上操作的。

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

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

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

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

© 2021 V2EX