首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spring-data-mongodb GroupOperation问题

spring-data-mongodb GroupOperation问题
EN

Stack Overflow用户
提问于 2021-05-22 18:18:59
回答 2查看 48关注 0票数 0

我在mongodb中有数据,就像

代码语言:javascript
复制
{
    "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",
}

我想查找如下格式的数据:

代码语言:javascript
复制
{
    "name":["test1","test2","test3","test4"],
}

当我使用以下代码时,它可以运行

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

结果就像

代码语言:javascript
复制
[
    {
        "_id": null,
        "name": [
            "test1",
            "test2",
            "test3",
            "test4",
            "test4"
        ]
    }
]

但是当我使用另一个代码时

代码语言:javascript
复制
     GroupOperation group = Aggregation.group();
        for (int i = 0; i < params.length; i++) {
            group.push(params[i]).as(params[i]);
        }

它得到了不好结果

代码语言:javascript
复制
[
    {
        "_id": null
    }
]

我该怎么办?

感谢您的建议

EN

回答 2

Stack Overflow用户

发布于 2021-05-23 19:04:34

MongoDB $group运算符不允许筛选(仅限accumulator operators)。

你的第二个代码尝试这样做:

代码语言:javascript
复制
{
  $group:{
    _id:null,
    test1:{
      $push:"$test1"
    },
    test2:{
      $push:"$test2"
    },
    ...
  }
}

你得到的结果是错误的

解决方案:分组前的过滤器(MongoPlayground)

代码语言:javascript
复制
MatchOperation match = Aggregation.match(Criteria.where("name").in(Arrays.asList(params)))
GroupOperation group = Aggregation.group().push("name").as("name");
票数 0
EN

Stack Overflow用户

发布于 2021-05-25 11:22:37

我应该使用下面的代码

代码语言:javascript
复制
group = group.push(params[i]).as(params[i]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67648349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档