有时一个月的时间没有写博客了,是最近比较忙,也是自己在学习的阶段,所以花在博客的时间就相对比较少了;最近一个月都是在学mongo的相关内容,包括mongo的map-reduce,聚合管道以及mongo的索引等技术点;今天写的文章内容就是我在学习聚合管道遇到的问题;
mongo聚合的java实现,mongo API提供两种的实现方式:
1.基于mongotemplate提供的聚合接口:aggregate(arg1,arg2....)等不同参数的方法,读者可以按需调用;特点是该API封装了mongo底层的聚合操作符,比如$match,$project等,暴露出来的对应为project()、match()等接口;所以这种方法更适合初学者使用;使用该接口不会出现我们标题说的那个错误;
2.基于比较底层提供的DBCollection提供的aggregate接口(arg1,arg2....);该方法要求对mongo的nosql比较熟悉,因为该接口入参是DBObject,所以需要我们自己写mongo的聚合操作符:$match等操作符,所以要求比较高;和我们这里相关脸的问题是,该接口内部调用mongo底层的数据默认的输出格式是INLINE,所以会出现我们标题的那个错误;后面会分析;
Java端实现聚合的时候,通过上面第二种实现方式的时候,出现了标题的那个错