spring data mongodb 实战源码   

源码包含了spring data mongodb的各种操作。

  • 增删改查
  • 自增ID通用设置,开发者不用关心
  • 批量更新封装
  • 配置文件方式连接数据库以及代码方式连接
  • dbref的关联使用
  • gridfs操作文件
  • 索引实践
  • Repositor操作集合
  • mapreduce
  • aggregation

下面是项目的工程目录结构

猿天地博客图片

聚合的使用

private static void aggregation() {
    Aggregation agg = newAggregation(
         group("author").count().as("count").first("author").as("name"),
         project("name","count"),
         sort(Direction.DESC, "count"),
         match(Criteria.where("count").gt(0))
    );
    AggregationResults<ArticleResult> results = mongoTemplate.aggregate(agg, "article_info", ArticleResult.class);
    List<ArticleResult> tagCount = results.getMappedResults();
    for (ArticleResult studentResult : tagCount) {
        System.out.println(studentResult.getName() + "\t" + studentResult.getCount());
    }
}

mapreduce使用

private static void complexMapreduce() {
    MapReduceOptions options = MapReduceOptions.options();
    options.outputCollection("Article_MapReduce");
    options.outputTypeReduce();
    options.finalizeFunction("classpath:finalize.js");
    MapReduceResults<ValueObject> reduceResults = mongoTemplate.mapReduce("article_info",  "classpath:map.js",  "classpath:reduce.js", options, ValueObject.class);
    reduceResults.forEach(System.out::println);
}

查询使用

//根据作者查询所有符合条件的数据
Query query = Query.query(Criteria.where("author").is("yinjihuan"));
List<Article> articles = mongoTemplate.find(query, Article.class);

//只查询符合条件的第一条数据
query = Query.query(Criteria.where("author").is("yinjihuan"));
Article article = mongoTemplate.findOne(query, Article.class);

//查询集合中所有数据,不加条件
articles = mongoTemplate.findAll(Article.class);

//查询符合条件的数量
query = Query.query(Criteria.where("author").is("yinjihuan"));
long count = mongoTemplate.count(query, Article.class);
评论

天地

2016-11-06 17:15:19.0 回复
最近正要学这个框架,源码下载下来看了下,能跑起来,覆盖了各种操作,挺好的。
尹吉欢@天地 今天刚上的这个新功能,没想到这么快就有人下载了,多谢支持。
2016-11-06 17:16:22.0 回复
评论

陈炳康

2016-11-08 17:33:41.0 回复
你这个项目 mongodb的驱动不是用的3.0的吧,我看呢好像是2.14的
尹吉欢@陈炳康 是的,因为spring data里面带的就是这个版本,但是是可以操作mongodb3.0的。
2016-11-08 23:11:03.0 回复