MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Spring mongoTemplate. Sắp xếp không hoạt động trong truy vấn địa lý (NearQuery)

Rất tiếc, không thể sắp xếp kết quả geoNear vì nó không trả về con trỏ và sắp xếp mặc định là khoảng cách với điểm. Những gì bạn có thể làm là sắp xếp các kết quả theo cách thủ công trong mã Java. Lưu ý rằng đoạn mã dưới đây bỏ qua khoảng cách và chỉ sắp xếp theo "timeStamp".

List<GeoResult<Person>> results = geoPoints.getContent();
Collections.sort(results, new Comparator<GeoResult<Person>>() {
    @Override
    public int compare(GeoResult<Person> o1, GeoResult<Person> o2) {
        return o1.getContent().getTimeStamp() == 2.getContent().getTimeStamp() ? 0 : 
                (o1.getContent().getTimeStamp() > o2.getContent().getTimeStamp() ? 1 : -1) ;
        }
    });

Một cách tiếp cận thay thế là sử dụng $ geoWithin và $ centerSphere. Vì bạn đang giới hạn kết quả với một số khoảng cách (biến khoảng cách), điều đó có thể hoạt động.

    Query query = Query.query(Criteria.where("coords").withinSphere(new Circle(p, new Distance(distance, Metrics.KILOMETERS).getNormalizedValue())));
    query.with(new Sort(Direction.DESC, "timeStamp"));
    Criteria criteria = new Criteria();
    criteria.and("type").is("MeasurementPoint");
    query.addCriteria(criteria);

    List<Person> geoPoints = mongoTemplate.find(query, MeasurementPoint.class);

Bạn có thể tìm thêm thông tin về $ geoWithin và $ centerSphere tại đây:

http://docs.mongodb.org/manual/reference/operator/geoWithin/

http://docs.mongodb.org/manual/reference/operator/centerSphere/




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB php $ in và $ regex

  2. Mongoid cung cấp cho Mongo hằng số chưa được khởi tạo

  3. Truy vấn đối tượng trong mảng con Mongoose

  4. Dữ liệu mùa xuân:Trường duy nhất trong tài liệu MongoDB

  5. Dữ liệu mùa xuân mongodb không đóng các kết nối mongodb