mongodb 建立LBS位置索引

來源:互聯網
上載者:User

標籤:color   ring   for   基本   base   blog   insert   com   art   

<dependency>  <groupId>org.mongodb</groupId>  <artifactId>mongo-java-driver</artifactId>  <version>3.2.2</version></dependency><dependency>  <groupId>org.apache.commons</groupId>  <artifactId>commons-lang3</artifactId>  <version>3.4</version></dependency>package com.teewoo.mongodb;import com.mongodb.BasicDBObject;import com.mongodb.BasicDBObjectBuilder;import com.mongodb.MongoClient;import com.mongodb.ServerAddress;import com.mongodb.client.FindIterable;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import com.mongodb.client.MongoDatabase;import org.apache.commons.lang3.StringUtils;import org.bson.Document;import org.bson.types.ObjectId;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/*** mongoDB 基本操作** @author xiaojf  2016-6-24 15:55:56*/public class MongoBaseOps {    private static MongoClient client;      //mongo用戶端    static {        client = new MongoClient(Arrays.asList(new ServerAddress("localhost", 27017)));    }    /**    * 根據db名稱擷取db對象    *    * @param name db名稱    * @return db對象    * @author xiaojf  2016-6-24 16:27:56    */    public static MongoDatabase getDbByName(String name) {        MongoDatabase mongoDatabase = client.getDatabase(name);        return mongoDatabase;    }    /**    * 根據mongo db名稱和mongo collection 名稱擷取mongo collection對象    *    * @param dbName mongo db名稱    * @param collectionName mongo collection 名稱    * @return mongo collection對象    * @author xiaojf  2016-6-24 16:36:39    */    public static MongoCollection getCollectionByName(String dbName,String collectionName){        MongoCollection<Document> mongoCollection = getDbByName(dbName).getCollection(collectionName);        return mongoCollection;    }    /**    * 新增文檔    *    * @param dbName mongo db 名稱    * @param collectionName mongo collection 名稱    * @param document 文檔    * @author xiaojf  2016-6-24 16:36:39    */    public static void insertDoc(String dbName,String collectionName,Document document){        MongoCollection mongoCollection = getCollectionByName(dbName, collectionName);        mongoCollection.insertOne(document);    }    /**    * 批量新增文檔    *    * @param dbName mongo db 名稱    * @param collectionName mongo collection 名稱    * @param documents 文檔集合    * @author xiaojf  2016-6-24 16:36:39    */    public static void batchInsertDoc(String dbName, String collectionName, List documents){        MongoCollection mongoCollection = getCollectionByName(dbName, collectionName);        mongoCollection.insertMany(documents);    }    /**    * 根據id刪除文檔    *    * @param dbName mongo db 名稱    * @param collectionName mongo collection 名稱    * @param id mongo document _id    * @author xiaojf  2016-6-24 17:07:16    */    public static void deleteById(String dbName, String collectionName,String id){        if (StringUtils.isBlank(dbName) || StringUtils.isBlank(collectionName) || StringUtils.isBlank(id)) {            return ;        }        MongoCollection mongoCollection = getCollectionByName(dbName, collectionName);        mongoCollection.deleteOne(new BasicDBObject("_id", new ObjectId(id)));    }    /**    * 根據id擷取文檔    *    * @param dbName mongo db 名稱    * @param collectionName mongo collection 名稱    * @param id mongo document _id    * @author xiaojf  2016-6-24 17:07:16    */    public static Object getById(String dbName, String collectionName,String id){        if (StringUtils.isBlank(dbName) || StringUtils.isBlank(collectionName) || StringUtils.isBlank(id)) {            return null;        }        MongoCollection mongoCollection = getCollectionByName(dbName, collectionName);        FindIterable findIterable = mongoCollection.find(new BasicDBObject("_id", new ObjectId(id)));        MongoCursor cursor = findIterable.iterator();        while (cursor.hasNext()) {            return cursor.next();        }        return null;    }    /**    * 建立索引    *    * @param dbName mongo db 名稱    * @param collectionName mongo collection 名稱    * @param fieldName 欄位名稱    * @param indexType 索引類型    * @author xiaojf  2016-6-27 13:43:02    */    public static void createIndex(String dbName, String collectionName,String fieldName,String indexType){        MongoCollection mongoCollection = getCollectionByName(dbName, collectionName);        mongoCollection.createIndex(new BasicDBObject(fieldName, indexType));    }    public static void main(String[] args) {        //擷取 mongodb db對象        MongoDatabase mongoDatabase = MongoBaseOps.getDbByName("db_test");        //刪除舊mongodb collection        mongoDatabase.getCollection("collect_gps").drop();        List<Document> documentList = new ArrayList<Document>();        for (int i = 0 ;i<100;i++) {            //構建2d索引的LBS document            Document doc = new Document();            doc.put("gps", BasicDBObjectBuilder.start().add("lon", 33+i).add("lat", i-33).get());            documentList.add(doc);        }        //批量新增文檔給        MongoBaseOps.batchInsertDoc("db_test","collect_gps",documentList);        //建立2d索引        MongoBaseOps.createIndex("db_test","collect_gps","gps","2d");    }}

 

mongodb 建立LBS位置索引

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.