mongodb创建空间索引

1、引入mongodb的maven依赖

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.2.2</version>
</dependency>

2、编写入库代码(java)

 String database = "database";
 String tableName = "tableName";	
 String mongoUrl = "mongodb://127.0.0.1:27017";
 int connection_count = 1;
 MongoClient client = new MongoClient(new MongoClientURI(mongoUrl, new MongoClientOptions.Builder().connectionsPerHost(connection_count)));
 MongoCollection<Document> conn = client.getDatabase(database).getCollection(tableName);
 List<Document> inserted = new ArrayList<>();
 double[] lonArray = xxx;
 double[] latArray = yyy;
 for (int i = 0; i < lonArray.length; i++) {	
    inserted.add(new Document("loc", new Point(new Position(lonArray[i],latArray[i]))));
 }
 conn.insertMany(inserted);
 client.close();

3、创建空间索引

进入mongodb控制台,执行:

db.table.ensureIndex({ loc : "2dsphere"})

4、测试空间查询

db.getCollection('table').find({
    loc: {
        $near: {
            $geometry: {
                type: "Point",
                coordinates: [
                    120,
                    35
                ]
            },
            $maxDistance: 10000
        }
    }
})