<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位置索引的更多相关文章

  1. 关于mongodb创建索引的一些经验总结(转)

    查看语句执行计划: explain() 在mongodb3+版本后输出格式发生改变: 详情参见:https://docs.mongodb.com/v3.0/reference/method/curso ...

  2. linux环境给mongodb创建索引

    首先我们来了解索引,如果有基础的可以直接看最后面的操作. 可参照 DoNotStop 的CSDN 博客 ,全文地址请点击: https://blog.csdn.net/u013725455/artic ...

  3. MongoDB 创建索引的语法

    1.为普通字段添加索引,并且为索引命名 db.集合名.createIndex( {"字段名": 1 },{"name":'idx_字段名'}) 说明: (1)索 ...

  4. 深入浅出Symfony2 - 结合MongoDB开发LBS应用

    简介 随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理.我所在的项目也正从事相关系统的开发,我们使用的是S ...

  5. 结合MongoDB开发LBS应用

    然后列举一下需求:1.实时性要高,有频繁的更新和读取2.可按距离排序支持分页3.支持多条件筛选(一个经纬度数据还包含其他属性,比如社交系统的性别.年龄) 方案简单介绍:1.sphinx geo索引支持 ...

  6. 【mongoDB中级篇②】索引与expain

    索引的操作 数据库百分之八十的工作基本上都是查询,而索引能帮我们更快的查询到想要的数据.但是其降低了数据的写入速度,所以要权衡常用的查询字段,不必在太多字段上建立索引. 在mongoDB中默认是用bt ...

  7. 上mongodb创建一些吸取的经验教训指数

    想来接触mongodb它已经快一年了,对于其指数已经积累了很多的经验,知识,以这个夜黑风高的优势,放mongodb总结一番吧. 一,索引介绍 mongodb具有两类索引,分别为单键索引和复合索引. 1 ...

  8. MongoDB系列四(索引).

    一.索引简介 再来老生常谈一番,什么是索引呢?数据库索引与书籍的索引类似.有了索引就不需要翻整本书,数据库可以直接在索引中查找,在索引中找到条目以后,就可以直接跳转到目标文档的位置,这能使查找速度提高 ...

  9. mongoDB常见的查询索引(三)

    1. _id索引     _id索引是绝大多数集合默认建立的索引     对于每个插入的数据,MongoDB会自动生成一条唯一的_id字段. 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

随机推荐

  1. 处理json数据的空数据为任意字符

    处理json数据的空数据为任意字符 有时候从后台返回来的数据需要处理一下,根据实际开发需求,不能在页面上直接显示空字符,需要显示为"无内容"或者其他字段,而有些json数据结构比较 ...

  2. 微信小程序,前端大梦想(二)

    微信小程序的视图与渲染  今天我们从四个方面来了解小程序:   •组件的基本使用  •数据绑定  •渲染标签  •模板的使用     一.组件的基本使用:  微信小程序为我们的开发提供了丰富的UI组件 ...

  3. ## Python中的Package和Jupyter中import包问题

    前言 关于python包的一些知识 Java中的package概念 我们知道在java中的import package概念, java中的包就是一个目录,里面包含着子目录,子目录套着子目录,当需要引入 ...

  4. tmux鼠标配置出现错误unknown option: mode-mouse

    setw -g mode-mouse on set -g mouse-select-pane on set -g mouse-resize-pane on set -g mouse-select-wi ...

  5. hadoop、Storm该选哪一个

    如果hadoop.Storm还感觉混要,那么此篇文章将帮助你把他们完全区分 可以带着下面问题来阅读本文章: 1.hadoop.Storm各是什么运算 2.Storm为什么被称之为流式计算系统 3.ha ...

  6. Linux -atime、mtime、ctime

    Linux中,文件都有其自身的atime.mtime.ctime,在不同的命令下,各时间发生相应的改变.下面,我们来简单的介绍一下: atime (access time):表示最后一次访问文件或目录 ...

  7. python在cmd上导包成功,但是python charm上面就提示找不到

    失败 成功 原因:我的python file名称和numpy 的名字一样了,把python file 的名字改了就好了

  8. [Monkey King]

    题目描述 在一个森林里住着N(N<=10000)只猴子.在一开始,他们是互不认识的.但是随着时间的推移,猴子们少不了争斗,但那只会发生在互不认识(认识具有传递性)的两只猴子之间.争斗时,两只猴子 ...

  9. ASP.NET Core实现强类型Configuration读取配置数据

    前言 实现读取JSON文件几种方式,在项目中采取老办法简单粗暴,结果老大过来一看,恩,这样不太可取,行吧那我就用.NET Core中最新的方式诺,切记,适合的才是最好的,切勿懒. .NET Core读 ...

  10. 安装配置sentry服务

    环境 系统环境:Centos6.7 Hadoop版本:CDH5.10 jdk版本:jdk7 注:本文并未集成kerberos组件 安装Sentry Server 选择安装hive的节点进行安装测试: ...