首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

mongodb java运用

2012-10-14 
mongodb java使用java 操作mongodb 类package com.te.centerimport java.net.UnknownHostExceptionimpor

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/Aupdate 一个 修改器对象 N/Anew 若为true,将返回修改后的对象而不是原始对象。在删除操作中,该参数被忽略。 falsefields 参见Retrieving a Subset of Fields (1.5.0+) All fieldsupsert 创建新对象若查询结果为空。 示例 (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;}*/}

?

热点排行