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

时间:2016-01-11 16:26:18

标签: java mongodb spring-data

我需要在Spring Data中使用$ out选项和来自MongoDB的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。我已经查看了许多教程,但似乎没有人将这些选项结合起来。

1 个答案:

答案 0 :(得分:0)

可以使用allowDiskUse设置

AggregationOptions$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);