依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
配置文件
spring:
data:
mongodb:
uri: mongodb://username:password@ip:port/db
# uri-eg:mongodb://admin:123456@127.0.0.1:27017/userdb
代码示例
public class MongoDemo{
@Autowired
private MongoTemplate mongoTemplate; //引入MongoTemplate
public void getDataFromMongo(){
MongoCollection<Document> mongoCollection = this.mongoTemplate.getCollection("collection_name"); //使用MongoTemplate获取想要取数据的集合
MongoCursor<Document> result = mongoCollection.find().iterator(); //调用find()方法获取数据
//遍历返回的数据
while(result.hasNext()){
Document document = result.next(); //获取返回的文档
String fieldValue = document.get("field_name"); //get文档中指定字段的数据
// do something
}
}
}
find()使用条件查询
//需要Bson类型对象作为参数
//构建查询条件
Bson bson = Filters.eq("field_name","value"); //eq为查询指定字段为指定值的数据 更多方法可以在IDE中Filters.之后看到
//...
MongoCursor<Document> rs = mongoCollection.find(bson).iterator(); //将Bson对象作为参数给find()方法
//遍历数据
//...
//聚合管道在Java中的使用
//获取某个字段的值重复次数大于等于2的数据
AggregateIterable<Document> rs = mongoCollection.aggregate(Arrays.asList(
Document.parse("{$group:{\"_id\":\"$fieldName\",count:{$sum:1}}}"),
Document.parse("{$match:{count:{$gte:2}}}")));
MongoCursor<Document> iterator = rs.iterator();
//遍历数据
//...
//find()跳过指定条数的数据以及限制返回的文档数量
MongoCursor<Document> rs = mongoCollection.find().skip(skipNum).limit(limitNum).iterator(); //跳过指定skipNum数量的数据以及限制返回数量为limitNum。建议skip()与sort()一起用,否则可能会不知道是不是需要跳过的数据。