zoukankan      html  css  js  c++  java
  • mongoDB2.6,java使用具体解释

    本文使用的环境是:win7_64+Eclipse+maven

    一、准备工作

    下载java驱动包

    驱动包下载地址:http://mvnrepository.com/artifact/org.mongodb/mongo-java-driver

    mongoDB下载:http://www.mongodb.org/

    在线api:http://docs.mongodb.org/manual/applications/drivers/


    二、安装Mongo

    1.windows下安装方式:

      安装Mongo数据库:

    第一步:下载安装包:假设是win系统,注意是64位还是32位版本号的,请选择正确的版本号。

    第二步:新建文件夹“D:MongoDB”,解压下载到的安装包,找到bin文件夹以下所有.exe文件。复制到刚创建的文件夹下。

    第三步:在“D:MongoDB”文件夹下新建“data”文件夹。它将会作为数据存放的根文件夹。

      配置Mongo服务端:

      打开CMD窗体,依照例如以下方式输入命令:
      > d:
      > cd D:MongoDB
      > mongod --dbpath D:MongoDBdata

    启动成功后从浏览器訪问:http://localhost:27017/

    标明windows下的mongodb已经启动成功。

      2.linux安装方式:

    下载后解压确保数据库文件夹大小剩余空间在3G以上;

    这里採用配置文件方式启动:在mongodb的根文件夹创建一个名为:mongodb.conf的文件。内容例如以下:

    #fork=true #以守护进程的方式运行,创建server进程
    
    ##master=true #单主从配置时设为主server
    
    ##salve=true ##单主从配置时设为从server
    
    #replSet=blort #设置富本集的名字
    
    #shardsvr=true #设置是否分片
    
    #repairpath = /mongodb2.6.3/repair 
    #pidfilepath = /mongodb2.6.3/mongodb.pid 
    #sysinfo = true 
    #verbose = true 
    #cpu = true 
    #Network and security set 
    #Management 
    #nohttpinterface = true 
    #rest = true 
    #syncdelay = 5
    
    #Directory and relavent set 
    dbpath = /mongodb2.6.3/data #数据库路径
    logpath = /mongodb2.6.3/logs/mongodb.log #日志输出文件路径
    logappend = true #日志输出方式
    directoryperdb = true 
    noauth = true 
    port = 8888 #端口号
    maxConns = 1024 
    fork = true 
    quota = true 
    quotaFiles = 1024 
    nssize = 16 
    

    启动方式例如以下:/mongodb2.6.3/bin/mongod -f /mongodb2.6.3/mongodb.conf
    记得开启linux的訪问端口:

    #vi /etc/sysconfig/iptables

    yy复制一行

    p粘贴

    改动端口

    #service iptables restart

    设置开机自启动

    #echo /mongodb2.6.3/bin/mongod -f /mongodb2.6.3/mongodb.config >>/etc/rc.local


    数据库启动完毕,接下来是创建数据库和集合:

    mongo --port 8888


    > show dbs
    admin  (empty)
    local  0.078GB
    > use admin(切换管理用户)
    switched to db admin
    > db.mymongo(创建数据库)
    admin.mymongo
    > db.addUser("root","root")(加入用户)
    WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
    Successfully added user: { "user" : "root", "roles" : [ "root" ] }
    > db.auth("root","root")(加入登陆用户)
    1
    > db.createCollection("t_users")(加入表)
    { "ok" : 1 }
    > show collections(显示表)
    system.indexes
    system.users
    system.version
    t_users
    > db.t_users.save({age:21})(存储数据)
    WriteResult({ "nInserted" : 1 })
    > db.t_users.find()(查询所有数据)
    { "_id" : ObjectId("53a2e45e4a674863b4ac5398"), "age" : 21 }

    mongodb 删除数据库

    use mymongo; 

    db.dropDatabase();

    mongodb删除表 

    db.t_users.drop();


    MongoDB服务停止:
      在linux下大家停止非常多服务都喜欢直接kill -9 PID,可是对于MongoDB假设运行了kill -9 PID。在下次启动时可能提示错误,导致服务无法启动,这个时候能够通过运行:

    Java代码  
    1. rm -f /app/hadoop/db/mongod.lock  
    也即删除指定数据文件夹下的mongod.lock文件就可以。

    正常停止方法:
    kill  -2 PID
    或者
    Java代码  
    1. ./mongo -host ip:port  
    先连接须要停止的服务,然后:
    Java代码  
    1. >use  admin  
    2. >db.shutdownServer();  

    这样也能够正常停止服务。

    三、Java操作MongoDB演示样例

    1、 建立Test.java,完毕简单的mongoDB数据库操作

    try {
    			Mongo mg = new MongoClient("192.168.186.129", 8888);
    			DB db = mg.getDB("mymongo");
    //                      用于推断用户登录
    //			if(!db.authenticate("sdap", "sdap123".toCharArray())){
    //				方法已经不建议使用
    //			}
    			Set<String> collectionNames = db.getCollectionNames();
    			for (String string : collectionNames) {
    				System.out.println(string);
    			}
    
    
    			DBCollection collection2 = db.getCollection("t_users2");
    			collection2 = db.getCollection("t_users2");
    			CarPasitionObj u = new CarPasitionObj();
    			u.setLa(1231d);
    			u.setLo(42342d);
    			u.setPn("京1aaa");
    			u.setTp(12);
    			String obj2Json = JsonUtils.getSingletonInstance().obj2Json(u);
    			BasicDBObject dbObject1=new BasicDBObject();
    			dbObject1.put("key", "123131");
    			dbObject1.put("value", obj2Json);
    			collection2.save(dbObject1);
    			<pre name="code" class="java">			BasicDBObject dbObject=new BasicDBObject();
    			dbObject.put("key", "123131");
    			DBCursor find = collection2.find(dbObject);
    			while (find.hasNext()) {
    				DBObject next = find.next();
    				String key = (String)next.get("key");
    				String json = (String)next.get("value");
    				System.out.println(key);
    				CarPasitionObj formJson = JsonUtils.getSingletonInstance().formJson(json, CarPasitionObj.class);
    				System.out.println(formJson.getPn());
    			}
    } catch (UnknownHostException e) {
                e.printStackTrace();
                
            }
    
    
    

     

    以下贴上我自己的mongodb的工具类:

    /**
     * Project Name:main
     * File Name:MongodbCacheManagerUtil.java
     * Package Name:com.hdsx.taxi.driver.cq.cache
     * Date:2014年4月9日下午12:49:55
     * Copyright (c) 2014, sid Jenkins All Rights Reserved.
     * 
     *
    */
    
    package com.hdsx.taxi.driver.cq.mongodb;
    
    import java.net.UnknownHostException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.log4j.Logger;
    
    import com.hdsx.taxi.driver.cq.module.InitServletModule;
    import com.hdsx.taxi.driver.cq.tcp.util.JsonUtils;
    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.MongoClient;
    
    
    /**
     * ClassName:MongodbCacheManagerUtil
     * Function: TODO ADD FUNCTION. 
     * Reason:	 TODO ADD REASON. 
     * Date:     2014年4月9日 下午12:49:55 
     * @author   sid
     * @see 	 
     */
    public class MongodbManagerUtil {
    	private static final Logger logger = Logger.getLogger(MongodbManagerUtil.class);
    
    	private Mongo mg = null;
    	private DB db = null;
    	
    	private volatile static MongodbManagerUtil singleton = null;
    	
    	public static final String KEY = "key";
    	
    	public static final String VALUE = "value";
    	
    	public static MongodbManagerUtil getSingletonInstance() {
    		if (singleton == null) {
    			synchronized (MongodbManagerUtil.class) {
    				if (singleton == null) {
    					singleton = new MongodbManagerUtil();
    				}
    			}
    			singleton = new MongodbManagerUtil();
    		}
    		return singleton;
    	}
    
    	private MongodbManagerUtil() {
    		if (logger.isDebugEnabled()) {
    			logger.debug("MongodbCacheManagerUtil() - start "); //$NON-NLS-1$
    		}
    			try {
    				mg = new MongoClient("192.168.186.129", 8888);
    				db = mg.getDB("mymongo");
    			} catch (UnknownHostException e) {
    				e.printStackTrace();
    				
    			}
    
    		if (logger.isDebugEnabled()) {
    			logger.debug("MongodbCacheManagerUtil() - end"); //$NON-NLS-1$
    		}
    	}
    
    	/**
    	 * 
    	 * getCache:(获取缓存对象). 
    	 *
    	 * @author sid
    	 * @param name
    	 * @return
    	 */
    	public DBCollection getCache(String name){
    		return this.db.getCollection(name);
    	}
    	/**
    	 * 
    	 * put:(在指定缓存对象中加入须要缓存的对象). 
    	 *
    	 * @author sid
    	 * @param cacheName
    	 * @param key
    	 * @param value
    	 */
        public void put(String cacheName, String key, Object value) {  
            DBCollection cache = this.db.getCollection(cacheName);
    		String obj2Json = JsonUtils.getSingletonInstance().obj2Json(value);
    		BasicDBObject obj = new BasicDBObject();
    		obj.put(MongodbManagerUtil.KEY, key);
    		obj.put(MongodbManagerUtil.VALUE, obj2Json);
            BasicDBObject basicDBObject = new BasicDBObject(MongodbManagerUtil.KEY, key);
            int size = cache.find(basicDBObject).count();
            if (size==0) {
        		cache.save(obj);
    		}else{
        		cache.update(basicDBObject, obj);
    		}
        }  
      
        /**
         * 
         * get:(依据key从指定缓存对象中获取对象). 
         *
         * @author sid
         * @param cacheName
         * @param key
         * @return
         */
        public <T> T get(String cacheName, String key, Class<T> classOfT) {
            DBCollection cache = this.db.getCollection(cacheName); 
            List<DBObject> array = cache.find(new BasicDBObject(MongodbManagerUtil.KEY, key)).toArray();
            if (array == null||array.size()==0) {
    			return null;
    		}
            DBObject dbObject = array.get(0);
            String json = (String)dbObject.get(MongodbManagerUtil.VALUE);
            
            return JsonUtils.getSingletonInstance().formJson(json, classOfT); 
        }  
        
        /**
         * 
         * remove:(从指定缓存对象中清除对象). 
         *
         * @author sid
         * @param cacheName
         * @param key
         */
        public void remove(String cacheName, String key) {
            DBCollection cache = this.db.getCollection(cacheName);
            cache.remove(new BasicDBObject(MongodbManagerUtil.KEY,key));
        }  
        
        /**
         * 
         * getKeys:(获取keys列表). 
         *
         * @author sid
         * @param cacheName
         * @return
         */
    	public List<String> getKeys(String cacheName){
    		List<String> list = new ArrayList<String>();
            DBCollection cache = this.db.getCollection(cacheName);
            DBCursor find = cache.find();
            while (find.hasNext()) {
            	DBObject next = find.next();
            	String key = (String) next.get(MongodbManagerUtil.KEY);
            	list.add(key);
    		}
            return list;
        }
    	
    	/**
    	 * 
    	 * containsKey:(推断消息是否存在). 
    	 *
    	 * @author sid
    	 * @param cacheName
    	 * @param key
    	 * @return
    	 */
    	public Boolean containsKey(String cacheName,String key){
            DBCollection cache = this.db.getCollection(cacheName);
            BasicDBObject basicDBObject = new BasicDBObject(MongodbManagerUtil.KEY, key);
            int size = cache.find(basicDBObject).count();
            if (size==0) {
        		return false;
    		}else{
    			return true;
    		}
    	}
    }
    
    
    除了save、insert、update;mongodb还有remove等操作

    当中find方法能够指定查询条件:

    大于等于:$gte

    小于等于:$lte

    不等于:$ne

    demo:users.find(new BasicDBObject("age", new BasicDBObject("$gte", 24)))

     


    
    
  • 相关阅读:
    Sizzle之tokenize
    直转字符串为数组
    Sizzle前奏
    (242-528)
    (177-240)
    (92-176)
    (63~91)
    一些变量(39~62)
    mysql导入导出sql文件
    vim编辑器的一些操作
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10767540.html
Copyright © 2011-2022 走看看