mongodb 创建LBS位置索引
<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位置索引的更多相关文章
- 关于mongodb创建索引的一些经验总结(转)
查看语句执行计划: explain() 在mongodb3+版本后输出格式发生改变: 详情参见:https://docs.mongodb.com/v3.0/reference/method/curso ...
- linux环境给mongodb创建索引
首先我们来了解索引,如果有基础的可以直接看最后面的操作. 可参照 DoNotStop 的CSDN 博客 ,全文地址请点击: https://blog.csdn.net/u013725455/artic ...
- MongoDB 创建索引的语法
1.为普通字段添加索引,并且为索引命名 db.集合名.createIndex( {"字段名": 1 },{"name":'idx_字段名'}) 说明: (1)索 ...
- 深入浅出Symfony2 - 结合MongoDB开发LBS应用
简介 随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理.我所在的项目也正从事相关系统的开发,我们使用的是S ...
- 结合MongoDB开发LBS应用
然后列举一下需求:1.实时性要高,有频繁的更新和读取2.可按距离排序支持分页3.支持多条件筛选(一个经纬度数据还包含其他属性,比如社交系统的性别.年龄) 方案简单介绍:1.sphinx geo索引支持 ...
- 【mongoDB中级篇②】索引与expain
索引的操作 数据库百分之八十的工作基本上都是查询,而索引能帮我们更快的查询到想要的数据.但是其降低了数据的写入速度,所以要权衡常用的查询字段,不必在太多字段上建立索引. 在mongoDB中默认是用bt ...
- 上mongodb创建一些吸取的经验教训指数
想来接触mongodb它已经快一年了,对于其指数已经积累了很多的经验,知识,以这个夜黑风高的优势,放mongodb总结一番吧. 一,索引介绍 mongodb具有两类索引,分别为单键索引和复合索引. 1 ...
- MongoDB系列四(索引).
一.索引简介 再来老生常谈一番,什么是索引呢?数据库索引与书籍的索引类似.有了索引就不需要翻整本书,数据库可以直接在索引中查找,在索引中找到条目以后,就可以直接跳转到目标文档的位置,这能使查找速度提高 ...
- mongoDB常见的查询索引(三)
1. _id索引 _id索引是绝大多数集合默认建立的索引 对于每个插入的数据,MongoDB会自动生成一条唯一的_id字段. 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
随机推荐
- MCDownloader(iOS下载器)说明书
示例 前言 很多iOS应用中都需要下载数据,并对这些下载的过程和结果进行管理,因此我才有了写这个MCDownloader的想法.在IOS 文件下载器-MCDownloadManager这篇文章中,我使 ...
- 聊聊 Tomcat 的单机多实例
Tomcat 从何而来? 先说 Tomcat 这一单词解释,如果你不是一个开发者,当然它在美国口语中并非是褒义词:如果你是开发者,那你一定听过 Web 应用服务器.Sun 公司和 Tomcat .如你 ...
- iptables常用命令之配置生产环境iptables及优化
第一步:清空当前的所有规则和计数 iptables -F #清空所有的防火墙规则 iptables -X #删除用户自定义的空链 iptables -Z #清空计数 第二步:配置允许ssh端口连接 i ...
- socket.io的编程实现
socket.io实例 一.环境要求 客户端需要引用socket.io.js文件 服务端需要按照node环境,以及npm install socket.io用来安装服务端的socket.io 二.客户 ...
- JS取消浏览器文本选中的方法
一 .问题的出现 今天在使用Easy-UI 的messager.alert()方法时候出现浏览器文本被选中,不知道其中是什么原因,如下图所示. 二 .解决思路 我最后的思路时在弹出消息框的同时,取消浏 ...
- php7 redis扩展编译安装
提示:php7版本不支持redis2点几的扩展 上正文: wget -c https://github.com/phpredis/phpredis/archive/php7.zip unzip php ...
- C#处理JSON 数据
网络中数据传输经常是xml或者json,现在做的一个项目之前调其他系统接口都是返回的xml格式,刚刚遇到一个返回json格式数据的接口,通过例子由易到难总结一下处理过程,希望能帮到和我一样开始不会的朋 ...
- JavaScript中的数据结构及实战系列(2):栈
开题: 不冒任何险,什么都不做,什么也不会有,什么也不是. 本文目录 栈介绍: JavaScript实现栈: 栈的应用: 栈介绍: 和队列一样,栈也是一种表结构,但是和队列的"先进先出&qu ...
- SpringMVC是什么?
一,首先是一个MVC框架. 在web模型中,MVC是一种很流行的框架,通过把Model,View,Controller分离,把较为复杂的web应用分成逻辑清晰的几部分,是为了简化开发,减少出错.还是为 ...
- javascript的null 和undifined
null表示一个对象,或者变量的值为空,undifined 表示声明了一个对象(变量),没有给他初始化或者压根儿就没有声明这个对象(变量). 1.null 是JavaScript关键字 undifin ...