mongoDB2.6,java使用詳解

來源:互聯網
上載者:User

本文使用的環境是: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:\MongoDB\data

啟動成功後從瀏覽器訪問:http://localhost:27017/

標明windows下的mongodb已經啟動成功;

  2.linux安裝方式:

下載後解壓確保資料庫目錄大小剩餘空間在3G以上;

這裡採用設定檔方式啟動:在mongodb的根目錄建立一個名為:mongodb.conf的檔案,內容如下:

#fork=true #以守護進程的方式運行,建立伺服器處理序##master=true #單主從配置時設為主伺服器##salve=true ##單主從配置時設為從伺服器#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)))

 



相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.