java - 如何使用 Spring Data Aggregation 输出到 MongoDB 集合

标签 java mongodb spring-data

我需要在 Spring Data 中使用 MongoDB 中的 $out 选项和allowDiskUse。 如果我有类似的东西

db.ratings.aggregate(
[
    {$group:{_id:"$movieId", users_rated:{$push: "$userId"}}},
    {$out: "movieUsersRated"}
],
{allowDiskUse: true}
);

在Java中像这样使用Spring Data

Aggregation agg = newAggregation(
            group("movieId").push("$userId").as("users_rated")
    );

但我不知道如何或在哪里添加 $out 和allowDiskUse。我看过很多教程,但似乎没有一个教程结合了这些选项。

最佳答案

可以使用AggregationOptions设置

allowDiskUse。不直接支持 $out 运算符,但可以通过为其提供 AggregationOperation 实现来添加。

AggregationOptions options = newAggregationOptions().allowDiskUse(true).build();

Aggregation agg = newAggregation( //
    group("movieId").push("$userId").as("users_rated"), //
    new AggregationOperation() {

      @Override
      public DBObject toDBObject(AggregationOperationContext context) {
        return new BasicDBObject("$out", "movieUsersRated");
      }
    }).withOptions(options);

关于java - 如何使用 Spring Data Aggregation 输出到 MongoDB 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34726416/

相关文章:

java - 为什么创建 Simple ImmutableMap 会导致未经检查的强制转换警告?

java - 如何处理错误编号格式异常:For input string: ""

java - 如何在一个 Java 进程中创建和写入文件并从另一个进程中读取文件而不会遇到读/写问题(Java/EE)

mongodb - MongoDB中的索引列表?

java - Eclipselink、c3p0 和 Spring - 创建太多连接!

javascript - Mongoose 从用户 ID 或基于 ip 查询

c# - 使用 MongoDB C# 驱动程序更新所有文档的字段数据类型

java - spring boot重启时如何防止db初始化

java - Spring Data Elastic Search中的事务支持

java - Spring Data Elasticsearch 何时支持服务器版本 7.1?