springboot mongo聚合操作

描述

直接写mongo的sql很简单。但是如果遇到聚合操作就不一定了。
我需要将聚合的两个字段相加。
本来springboot支持直接写mongo命令的。后来不知道,为什么不能用了。

解决办法

参考

MongoCollection<Document> collection = database.getCollection("myCollection");

AggregateIterable<Document> output = collection.aggregate(Arrays.asList(
        new Document("$unwind", "$views"),
        new Document("$match", new Document("views.isActive", true)),
        new Document("$sort", new Document("views.date", 1)),
        new Document("$limit", 200),
        new Document("$project", new Document("_id", 0)
                    .append("url", "$views.url")
                    .append("date", "$views.date"))
        ));

// Print for demo
for (Document dbObject : output)
{
    System.out.println(dbObject);
}

这种形式跟 mongo的语法最接近了。

    db.UserInfo.aggregate([
    {
        $match:{statisticsTime:{$gt:1580604627000,$lt:4110679570000},
            userCode:"ID89777666"
        }
    }
    ,
    {
        $group:{
            _id:"$childernode",
            Duration:{$sum:{$add:["$fireDuration","$outDuration"]}},
            Times:{$sum:{$add:["$fireTimes","$outTimes"]}}
        }
    }]).skip(3).limit(5)

遇到问题

$project 与 $group 有冲突

你只能用一个。

总结

没了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值