`

mongodb java使用

 
阅读更多
java 操作mongodb 类
package com.te.center;

import java.net.UnknownHostException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.google.gson.Gson;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.mongodb.WriteResult;
import com.te.pojo.Driver;
import com.te.pojo.User;

/**
 * 
 * @author yqf
 *
 */
public class TaxiCenter {
	private TaxiCenter(){}
	private static Mongo mg = null;
	private static DB db;
	private static DBCollection drivers;
	private static DBCollection users;
	private static TaxiCenter tc = new TaxiCenter();
	/*private Map<String,Timestamp> driverMap = new HashMap<String,Timestamp>(); 
	private Map<String,Timestamp> userMap = new HashMap<String,Timestamp>(); */
	private static boolean isInit = false; 
	public static TaxiCenter getTaxiCenter(){
		init();
		return tc;
	}
	private static void init() {
		if(isInit== false){
			try {
				mg = new Mongo();
				//mg = new Mongo("localhost", 27017);
			} catch (UnknownHostException e) {
				e.fillInStackTrace();
			} catch (MongoException e) {
				e.printStackTrace();
			}
			//获取temp DB;如果默认没有创建,mongodb会自动创建
			db = mg.getDB("te");
			//获取users DBCollection;如果默认没有创建,mongodb会自动创建
			drivers = db.getCollection("drivers");
			users = db.getCollection("users");
			//创建二维索引
			drivers.createIndex(new BasicDBObject("loc", "2d"));
			drivers.ensureIndex("driverID");
			drivers.ensureIndex("TIME");
			users.createIndex(new BasicDBObject("loc", "2d"));
			users.ensureIndex("userID");
			users.ensureIndex("TIME");
			isInit = true;
		}
	}
//	//乘客队列
//	private List<User> passs = new ArrayList<User>();
//	//司机队列
//	private List<Driver> drvers = new ArrayList<Driver>();
//	//对话 key:接收方 value 对话
//	private HashMap<Object, ArrayList<Talking>> talks = new HashMap<Object,ArrayList<Talking>>(); 
	/*public synchronized List<Talking> addOrGetTalk(int command,Object receive, Object send, Talking talk){
		if(command==0){ //获取消息
			//返回处理
			if(talks.containsKey(send)){
				 ArrayList<Talking> ret = talks.get(send);
				 talks.remove(send);
				 return ret;
			} else {
				return new ArrayList<Talking>();
			}
		} else if(command == 1){ //对话
			if(talks.containsKey(receive)){
				ArrayList<Talking> list = talks.get(receive);
				list.add(talk);
			} else {
				ArrayList<Talking> list = new ArrayList<Talking>();
				list.add(talk);
				talks.put(receive, list);
			}
			//返回处理
			if(talks.containsKey(send)){
				 ArrayList<Talking> ret = talks.get(send);
				 talks.remove(send);
				 return ret;
			} else {
				return new ArrayList<Talking>();
			}
		} else {
			return new ArrayList<Talking>();
		}
	}*/
	/**
	 * 增加乘客
	 * @param pass
	 */
	public void addPass(User pass){
		Gson gson = new Gson();
		double[] tt = {Double.parseDouble(pass.getLat()), Double.parseDouble(pass.getLng())};
		DBObject passObj = new BasicDBObject();
		passObj.put("loc", tt);
		passObj.put("USER", gson.toJson(pass));
		passObj.put("userID", pass.getUserId());
		Timestamp time = new java.sql.Timestamp(System.currentTimeMillis());
		passObj.put("TIME", time);
		DBObject query = new BasicDBObject();
		query.put("userID", pass.getUserId());
		users.findAndModify(query, null, null, false, passObj, false, true);
		//userMap.put(pass.getUserId(), time);
		/*query
		 查询过滤条件
		 {}
		sort
		 如果多个文档符合查询过滤条件,将以该参数指定的排列方式选择出排在首位的对象,该对象将被操作
		 {}
		remove
		 若为true,被选中对象将在返回前被删除
		 N/A
		update
		 一个 修改器对象
		 N/A
		new
		 若为true,将返回修改后的对象而不是原始对象。在删除操作中,该参数被忽略。
		 false
		fields
		 参见Retrieving a Subset of Fields (1.5.0+)
		 All fields
		upsert
		 创建新对象若查询结果为空。 示例 (1.5.4+)*/
	}
	public int removeUser(/*String userId*/Timestamp time){
		DBObject passObj = new BasicDBObject();
		DBObject qry = new BasicDBObject();
		qry.put("$lt", time);
		passObj.put("TIME", qry);
		WriteResult rst = users.remove(passObj);
		return rst.getN();
//		userMap.remove(userId);
	}
	/**
	 * 增加司机
	 * @param pass
	 */
	public void addDriver(Driver driver){
		DBObject passObj = new BasicDBObject();
		double[] tt = {Double.parseDouble(driver.getLat()), Double.parseDouble(driver.getLng())};
		passObj.put("loc", tt);
		Gson gson = new Gson();
		passObj.put("DRIVER", gson.toJson(driver));
		passObj.put("driverID", driver.getPhoneid());
		Timestamp time = new java.sql.Timestamp(System.currentTimeMillis());
		passObj.put("TIME", time);
		//drivers.save(passObj);
		DBObject query = new BasicDBObject();
		query.put("driverID", driver.getPhoneid());
		drivers.findAndModify(query, null, null, false, passObj, false, true);
		//driverMap.put(driver.getPhoneid(),new java.sql.Timestamp(System.currentTimeMillis()));
	}
	public int removeDriver(/*String driverId,*/Timestamp time){
		DBObject passObj = new BasicDBObject();
//		passObj.put("driverID", driverId);
		DBObject qry = new BasicDBObject();
		qry.put("$lt", time);
		passObj.put("TIME", qry);
		WriteResult rst = drivers.remove(passObj);
		return rst.getN();
//		driverMap.remove(driverId);
	}
	//查询乘客附近司机
	public List<Driver> getDrivers(User user) {
		List<Driver> retList = new ArrayList<Driver>();
		DBObject src = new BasicDBObject();
		double[] userLoc = {Double.parseDouble(user.getLat()), Double.parseDouble(user.getLng())};
		src.put("$near", userLoc);
		src.put("$maxDistance", 100); //默认100米
		DBObject qry = new BasicDBObject();
		qry.put("loc", src);
		DBCursor c = drivers.find(qry);
		Iterator itr = c.iterator();
		Gson gson = new Gson();
		while(itr.hasNext()){
			DBObject obj = (DBObject)itr.next();
			Driver driver = (Driver) (gson.fromJson((String)obj.get("DRIVER"), Driver.class));
			retList.add(driver);
		}
		return retList;
	}
	//查询附近乘客
	public List<User> getUsers(Driver driver) {
		List<User> retList = new ArrayList<User>();
		DBObject src = new BasicDBObject();
		double[] userLoc = {Double.parseDouble(driver.getLat()), Double.parseDouble(driver.getLng())};
		src.put("$near", userLoc);
		src.put("$maxDistance", 100); //默认100米
		DBObject qry = new BasicDBObject();
		qry.put("loc", src);
		DBCursor c = users.find(qry);
		Iterator itr = c.iterator();
		Gson gson = new Gson();
		while(itr.hasNext()){
			DBObject obj = (DBObject)itr.next();
			User user = (User)gson.fromJson((String)obj.get("USER"), User.class);
			retList.add(user);
		}
		return retList;
	}
	/*public Map<String, Timestamp> getDriverMap() {
		return driverMap;
	}
	public Map<String, Timestamp> getUserMap() {
		return userMap;
	}*/
	
}

 

分享到:
评论

相关推荐

    MongoDB java使用文档

    ### MongoDB Java 使用文档知识点概述 #### 一、MongoDB 的安装与配置 ##### Windows 下的安装与配置 1. **下载 MongoDB**: - 访问 MongoDB 官方网站:[http://www.mongodb.org/](http://www.mongodb.org/)。 ...

    MongoDBjava各版本驱动下载

    在Java中使用MongoDB,首先需要安装并配置对应的驱动版本,以确保与正在运行的MongoDB服务器兼容。 1. MongoDB驱动介绍: MongoDB提供了多种语言的驱动程序,Java驱动是其中之一。它基于Java 6及更高版本,实现了...

    MongoDB Java Driver 简单操作

    为了方便开发者使用 Java 进行开发,MongoDB 提供了官方的 Java 驱动程序(MongoDB Java Driver),使得 Java 应用能够轻松地与 MongoDB 数据库进行交互。 #### 二、基本概念与连接 在开始使用 MongoDB Java Driver...

    mongodb java简单demo

    在Java开发中,我们通常使用Java驱动程序来与MongoDB进行交互。本篇将详细介绍如何使用Java连接MongoDB,以及进行基本的数据操作:创建集合、添加文档、修改文档、查询文档和删除文档。 首先,为了连接MongoDB,...

    MongoDB Java API 中文

    ### MongoDB Java API 使用详解 #### 一、Java 驱动简介与一致性 MongoDB 的 Java 驱动是线程安全的,适用于大多数应用程序场景。通常情况下,只需要创建一个 `Mongo` 实例即可,因为它内部包含了一个连接池(默认...

    mongoDB java driver api

    6. **查询和过滤**:MongoDB Java驱动支持灵活的查询语法,允许你使用各种条件进行数据筛选。这包括基本的比较操作符(如$eq, $gt, $lt等)、逻辑操作符(如$and, $or)以及更复杂的聚合管道操作。 7. **索引**:...

    MongoDB之Java使用例子

    在这个“MongoDB之Java使用例子”中,我们将深入探讨如何在Java环境中操作MongoDB数据库,包括增、删、改、查(CRUD)操作以及图像数据的存储和检索。 首先,Java与MongoDB的交互主要通过MongoDB的Java驱动程序实现...

    mongodb java Driver

    为了更好地理解和使用MongoDB Java驱动程序,建议参考官方文档和社区资源,如CSDN上的博客(如链接所示),以及Stack Overflow等平台上的讨论。同时,不断学习和实践,以适应不断发展的MongoDB和Java技术栈。

    mongodb java 驱动支持jar 及其源码

    在Java开发中,与MongoDB交互通常需要使用官方提供的Java驱动程序。本篇文章将详细介绍“mongodb java驱动支持jar”及其源码,帮助开发者更好地理解和使用这些资源。 首先,`mongo-java-driver-3.8.0.jar`是MongoDB...

    MongoDB java实现增删改查

    在Java开发中,我们可以使用MongoDB的Java驱动程序来实现对MongoDB数据库的增、删、改、查(CRUD)操作。以下是对这些核心功能的详细说明。 1. **增加(Create)** 要在MongoDB中插入数据,我们需要使用`...

    MongoDB Java操作大全 源代码 实例

    本资料包“MongoDB Java操作大全 源代码 实例”将深入探讨如何使用Java API进行MongoDB的操作。 1. **连接MongoDB** 在Java中,首先需要通过`MongoClient`类建立到MongoDB服务器的连接。例如: ```java ...

    Mongodb + GridFS +Java 操作Mongodb中存储的文件

    目前,Java驱动通常使用的是MongoDB Java Driver,可以在Maven仓库中找到对应的依赖,例如: ```xml &lt;groupId&gt;org.mongodb &lt;artifactId&gt;mongodb-driver-sync &lt;version&gt;4.3.0 ``` 接下来,我们需要配置MongoDB...

    mongodb java driver 2.11

    在实际开发中,使用MongoDB Java Driver 2.11时,首先需要在项目中添加对应的依赖,例如在Maven项目中,可以在pom.xml文件中加入如下配置: ```xml &lt;groupId&gt;org.mongodb &lt;artifactId&gt;mongo-java-driver ...

    mongoDB java 驱动

    mongoDB java 驱动 mongoDB java 驱动 mongoDB java 驱动 mongoDB java 驱动

    MongoDb java driver 3.4.2

    8. **异步编程支持**:从3.x版本开始,MongoDB Java驱动程序引入了异步API,使用`MongoAsyncClient`和`MongoAsyncDatabase`,这使得在高并发环境中性能更优。 9. **安全认证**:MongoDB支持多种身份验证机制,如...

    mongodb_java_2.6_API

    本篇将深入探讨"mongodb_java_2.6_API",即MongoDB 2.6版本的Java驱动程序API,了解如何使用Java进行MongoDB的开发。 1. **MongoDB Java驱动程序概述** MongoDB的Java驱动程序是Java开发者与MongoDB服务器通信的...

    java连接mongodb的jar包

    在本文中,我们将深入探讨如何使用Java连接MongoDB,涉及的知识点包括MongoDB Java驱动程序的安装、配置,以及基本的连接和操作数据库的方法。 首先,我们来看“java连接mongodb的jar包”。这个“mongodbjar”通常...

    mongodb Java连接池

    mongodb Java连接池配置 用于避免Java连接mongodb数据库数过高引起的一系列问题

Global site tag (gtag.js) - Google Analytics