Spring-Data-MongoDB中MongoTemplate的使用

  • find
    • mongoTemplate.find(Query query, Class<T> entityClass )
      • 返回值 List<T>
      • 实例:List<User> users = mongoTemplate.find(new Query(Criteria.where("age").is(20).and("username").is("zhangsan")), User.class);
    • mongoTemplate.find(Query query, Class<T> entityClass,String Collectionname )
      • 返回值 List<T>
      • 实例:List<User> users1 = mongoTemplate.find(new Query(Criteria.where("age").is(20).and("username").is("zhangsan1")), User.class, "user");
    • mongoTemplate.findAll(Class<T> entityClass)
      • 返回值:List<T>
      • 实例:List<User> all = mongoTemplate.findAll(User.class);
    • 代码示例:

      Spring-Data-MongoDB中MongoTemplate的使用

    • mongoTemplate.findAll(Class<T> entityClass,String Collectionname)
      • 返回值:List<T>
      • 实例:List<User> all = mongoTemplate.findAll(User.class,"user");
  • Aggregation
    • Aggregation.project(String... fields)
      • 返回值:ProjectionOperation
      • 实例:ProjectionOperation project = Aggregation.project("age", "username");
    • Aggregation.match(Criteria criteria)
      • 返回值:MatchOperation
      • 实例:MatchOperation match = Aggregation.match( Criteria().where("age").is(20));
    • Aggregation.group(String... fields )
      • 返回值:GroupOperation
      • 实例:GroupOperation group = Aggregation.group("username","age").sum("age").as("count");
    • 代码示例:多字段分组

      Spring-Data-MongoDB中MongoTemplate的使用

    • 代码示例:单字段分组求和

      Spring-Data-MongoDB中MongoTemplate的使用

    • 代码示例: 多字段分组求和

      Spring-Data-MongoDB中MongoTemplate的使用

      • Aggregation.limit(long maxElements)
        • 返回值:LimitOperation
        • 实例:LimitOperation limit = Aggregation.limit(2);
        • 注释:只查询集合中的几个文档
      • Aggregation.sortByCount(String field)
        • 返回值:SortByCountOperation
        • 实例:SortByCountOperation sort = Aggregation.sortByCount("age");
        • 注释:查询结果会按照age排序,并计算每个age的个数.
      • 代码示例:

        Spring-Data-MongoDB中MongoTemplate的使用

      • Aggregation.skip(long maxElements)
        • 返回值:SkipOperation
        • 实例:SkipOperation skip = Aggregation.skip((long)2);
        • 注释:跳过集合中前几个文档。
      • Aggregation.sort(Direction direction, String... fields);
        • 返回值:SortOperation
        • 实例:SortOperation sort = Aggregation.sort(Sort.Direction.DESC, "age");
    • 代码示例:

      Spring-Data-MongoDB中MongoTemplate的使用

      • Aggregation.unwind(String field)
        • 返回值:UnwindOperation
        • 实例:UnwindOperation unwind = Aggregation.unwind("sizes");
        • 注释:会查询出只有该字段的数据.
      • 代码示例:

        Spring-Data-MongoDB中MongoTemplate的使用

      • Aggregation.newAggregation(Class<T> type, AggregationOperation... operations)
        • 返回值: TypedAggregation<T>
        • 实例:TypedAggregation<User> userTypedAggregation = Aggregation.newAggregation(User.class, skip,sort);
        • 注释:将Aggregation各个条件进行组合.交由mongoTemplate进行处理.
      • mongoTemplate.aggregate(TypedAggregation<?> aggregation, String inputCollectionName, Class<O> outputType);
        • 返回值:AggregationResults<Document>
        • 实例:AggregationResults<Document> user = mongoTemplate.aggregate(userTypedAggregation, "user", Document.class);
  • count
    • mongoTemplate.count(Query query, Class<?> entityClass);
      • 返回值:long
      • 实例:long count = mongoTemplate.count(new Query(Criteria.where("age").is(20)), User.class);