$near запрос через Java

Я хочу запустить запрос $near для коллекции через Java. Я не уверен, как использовать для этого QeuryBuilder или BasicDbObject. Как правильно запустить запрос $near через код Java. Ниже приведен мой код для структуры документа. Атрибут «местоположение» хранит тип как точку, а координаты хранят широту и долготу. Я создал индекс 2dsphere для этой коллекции.

BasicDBObject doc = new BasicDBObject("attr1", nextLine[0])
                          .append("attr2", nextLine[1])
                          .append("edge-metro-code", nextLine[6])
                          .append("location", new BasicDBObject("type", "Point")
                                                        .append("coordinates",latLong)) 
                          .append("attr3", nextLine[9])
                          .append("attr4", nextLine[10])

person koustubhC    schedule 03.07.2013    source источник


Ответы (1)


Сначала вам понадобится maxDistance и опорная точка для расчета ближайших документов. В приведенном ниже коде показано, как создать объект DBObject для запроса рядом с документами.

double[] coords = new double[2];
long distance = 100;

DBObject query = BasicDBObjectBuilder.start()
    .push("location")
        .add("$maxDistance", distance)
        .push("$near")
            .push("$geometry")
                .add("type", "Point")
                .add("coordinates", coords)
    .get();

Это приведет к тому, что json:

{
    "location": {
        "$maxDistance": 100,
        "$near": {
            "$geometry": {
                "type": "Point",
                "coordinates": [
                    0,
                    0
                ]
            }
        }
    }
}

Если вы используете mongodb 2.2, приведенный выше код не будет работать. Я должен использовать следующее:

double[] coords = new double[2];
long distance = 100;

DBObject query = BasicDBObjectBuilder.start()
    .push("location")
        .add("$maxDistance", distance)
        .add("$near", coords)
    .get();

JSON будет:

{
    "location" : {
        "$maxDistance" : 100,
        "$near" : [
            0,
            0
        ]
    }
}

Вы можете найти больше информации о близких запросах здесь:

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

person Miguel Cartagena    schedule 04.07.2013
comment
Стоит отметить, что этот код будет работать с MongoDB версии 2.4, но не с 2.2. - person Trisha; 04.07.2013