我需要在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。我看过很多教程,但似乎没有一个将这些选项结合在一起。

最佳答案

可以使用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);

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

10-08 23:16