我在 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
uselessVisitor 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 1
动态添加里 写成 group = group.push(params[i]).as(params[i]); 就好了,我看了一下源码,push 函数里新建了一个 GroupOperation 对象,不是在本来的对象上操作的。
|