$通过Java进行near查询

问题描述 投票:0回答:1

我想通过 Java 对集合运行

$near
查询。我不确定如何使用
QueryBuilder
BasicDbObject
来实现此目的。通过Java代码运行
$near
查询的正确方法是什么?

下面是我的文档结构代码。 “位置”属性将类型存储为点,坐标存储经纬度。我已经在这个集合上创建了一个 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])
mongodb mongodb-java
1个回答
0
投票

首先,您需要一个 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/

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.