package br.com.igormaldonado.springbootexample.mongo; import br.com.igormaldonado.springbootexample.model.Page; import com.mongodb.bulk.BulkWriteResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.geo.Circle; import org.springframework.data.geo.Distance; import org.springframework.data.geo.Point; import org.springframework.data.mongodb.core.BulkOperations; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Component; import java.util.List; @Component public class PageDao { @Autowired private PageRepository pageRepository; @Autowired private MongoTemplate mongoTemplate; public void bulkInsert(List<Page> pages) { BulkOperations bulkOperations = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, Page.class); BulkWriteResult result = bulkOperations.insert(pages).execute(); System.out.println("result from bulk: "+result.toString()); } public List<Page> findClose(Point center, Distance distance) { System.out.println("center: "+center.getX()+" - "+center.getY()); System.out.println("Distance value: "+ distance.getValue()); System.out.println("unit: "+distance.getUnit()); Circle circle = new Circle(center, distance); Query query = Query.query(Criteria.where("location").withinSphere(circle)); // // // return mongoTemplate.find(query, Page.class); return mongoTemplate.find(query, Page.class); // return pageRepository.findByLocationNear(center, distance); } }