我在 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"], }
目前使用方式是这样子
GroupOperation group = Aggregation.group().push("name").as("name");
查询结果
[ { "_id": null, "name": [ "test1", "test2", "test3", "test4", "test4" ] } ]
但我修改为使用动态添加的时候
GroupOperation group = Aggregation.group(); for (int i = 0; i < params.length; i++) { group.push(params[i]).as(params[i]); }
发现查询的结果为
[ { "_id": null } ]
感觉动态 push 哪里并没有生效,查询了挺多的资料好像也没有找到,感觉使用人挺少的
1 zm8m93Q1e5otOC69 2021-05-22 18:35:09 +08:00 有啥好的教程吗?之前用 GridFS 传文件,网上教程各种方法过时,还是自己摸索的用 GridBucket 实现的 |
![]() | 2 acr0ss 2021-05-23 12:43:28 +08:00 可以打印 query,或者断点查看 query,明确语句是否正确。 |
3 FEINIAO233 2021-05-24 12:05:15 +08:00 ![]() 动态添加里 写成 group = group.push(params[i]).as(params[i]); 就好了,我看了一下源码,push 函数里新建了一个 GroupOperation 对象,不是在本来的对象上操作的。 |