1. 程式人生 > >mongodb安裝、啟動及java操作

mongodb安裝、啟動及java操作

最近專案中用到MongoDB 簡單的研究了一下 ,還是很簡單的,mongoDB是nosql中的佼佼者,被廣泛應用的一種非關係型的資料庫。

1,mongodb的下載安裝,csdn中隨便搜尋mongodb的資源,一堆,沒有的可以加群255453635 加群備註CSDN下載mongodb的資源和java中使用mongodb的驅動程式以及mongodb實戰等pdf書籍。

2,解壓mongodb.zip到任意的目錄下,例如d:/mongodb

3, 在bin的同級目錄新建data目錄,在data下新建db目錄

4,開啟cmd 進入bin目錄

5,輸入 mongod.exe –dbpath:\mongodb\data\db 如圖則證明mongodb安裝啟動成功。

這裡寫圖片描述

當然不排除有一些小夥伴運氣不好出現如下的錯誤:

這裡寫圖片描述

這個錯誤比較常見,是因為每次使用mongodb後的不正常關閉引起的,解決也很簡單 輸入命令 mongod.exe –auth –dbpath:\mongodb\data\db –repair 後再次 輸入mongod.exe –dbpath:\mongodb\data\db 就可以正常啟動了,至此 mongodb啟動安裝完成。

mongodb的常用操作:

下面可以使用幾個mongodb的常見命令來體驗一下mongodb。

mongodb和sql是不同的 ,但是還是有一些相似性。
1,show databases show dbs 這兩個命令都是顯示所有資料庫

2,mongodb中使用某一個數據庫的話和sql一樣 use test 代表切換到資料庫test中,但是不同的是test如果不存在則會新建資料庫test,這也是mongodb新建資料庫的方式。

3,mongodb中沒有表的概念,代替的是集合,類似於sql中的顯示所有表,mongo中是顯示所有集合,show collections

4,新建user表並插入資料{“name”:”wpz”,”password”:”123”} mongodb並沒有在專門的建表語句,這是因為所有集合不會有固定的資料型別和關係,所以不需要單獨的建立 db.user.save({“name”:”wpz”,”password”:”123”} );
這個命令就指定了新建user表,並儲存{“name”:”wpz”,”password”:”123”} 物件對錶中。

5,檢視資料 db.user.find();這句話指明查詢user中的所有資訊。下一篇微博將會詳細說明mongodb的語法,這裡不再贅述。

二:mongodb在java中的使用。

mongodb要想在java中正常的使用需要滿足兩個條件即可 1,有可用的mongodb服務,本地或者遠端都可以 2,程式碼中引入mongodb對於java的驅動包 mongo-java-driver-2.11.3.jar 沒有的同學而且不想花分的也可以加群255453635 下載。

可以先使用下面mongodb的工具類來體驗一下mongodb的java操作。

package www.cslc.eureka.util;

import java.net.UnknownHostException;
import java.sql.Date;
import java.util.List;

import org.junit.Test;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;

public class MongoManager {
    private final static ThreadLocal<Mongo> mongos = new ThreadLocal<Mongo>();  

    public static DB getdb(){  
        return getMongos().getDB("eureka");  
    }  

    public static Mongo getMongos() {  
        Mongo mongo = mongos.get();  
        if (mongo == null) {  
            try {  
                mongo = new Mongo("127.0.0.1",27017);  
                mongos.set(mongo);  
            } catch (UnknownHostException e) {  
                e.printStackTrace();  
            } catch (MongoException e) {  
                e.printStackTrace();  
            }  
        }  
        return mongo;  
    }  

    public static void close(){  
        Mongo mongo = mongos.get();  
        if(mongo!=null){  
            mongo.close();  
            mongos.remove();  
        }  
    }  


    /** 
     * 獲取集合(表) 
     *  
     * @param collection 
     */  
    public static DBCollection getCollection(String collection) {  

        return getdb().getCollection(collection);  
    }  
    /**
     * 插入
     * @param collection
     * @param o
     */
    public static void insert(String collection, DBObject o) {  

        getCollection(collection).insert(o);  
    }  
    /**
     * 批量插入
     * @param collection
     * @param list
     */
    public void insertBatch(String collection, List<DBObject> list) {  

        if (list == null || list.isEmpty()) {  
            return;  
        }  
        getCollection(collection).insert(list);  

    }  
    /** 
     * 刪除 
     *  
     * @param collection 
     * @param q 
     *            查詢條件 
     */  
    public static void delete(String collection, DBObject q) {  

        getCollection(collection).remove(q);  
    }  

    /** 
     * 批量刪除 
     *  
     * @param collection 
     * @param list 
     *            刪除條件列表 
     */  
    public static void deleteBatch(String collection, List<DBObject> list) {  

        if (list == null || list.isEmpty()) {  
            return;  
        }  

        for (int i = 0; i < list.size(); i++) {  
            getCollection(collection).remove(list.get(i));  
        }  
    }  


    /** 
     * 更新 
     *  
     * @param collection 
     * @param q 
     *            查詢條件 
     * @param setFields 
     *            更新物件 
     */  
    public static void update(String collection, DBObject q, DBObject setFields) {  

        getCollection(collection).update(q,new BasicDBObject("$set",setFields));  
    }  

    /** 
     * 查詢集合所有物件 
     *  
     * @param collection 
     */  
    public static List<DBObject> findAll(String collection) {  

        return getCollection(collection).find().toArray();  
    }  

    /** 
     * 按順序查詢集合所有物件 
     *  
     * @param collection 
     *            資料集 
     * @param orderBy 
     *            排序 
     */  
    public static List<DBObject> findAll(String collection, DBObject orderBy) {  

        return getCollection(collection).find().sort(orderBy)  
                .toArray();  
    }  

    /** 
     * 查詢(返回一個物件) 
     *  
     * @param collection 
     * @param q 
     *            查詢條件 
     */  
    public static DBObject findOne(String collection, DBObject q) {  

        return getCollection(collection).findOne(q);  
    }  

    /** 
     * 查詢(返回一個物件) 
     *  
     * @param collection 
     * @param q 
     *            查詢條件 
     * @param fileds 
     *            返回欄位 
     */  
    public static DBObject findOne(String collection, DBObject q, DBObject fileds) {  

        return getCollection(collection).findOne(q, fileds);  
    }  



    /** 
     * 分頁查詢集合物件,返回特定欄位 
     *  
     * @param collection 
     * @param q 
     *            查詢條件 
     * @param fileds 
     *            返回欄位 
     * @pageNo 第n頁 
     * @perPageCount 每頁記錄數 
     */  
    public static List<DBObject> findLess(String collection, DBObject q, DBObject fileds, int pageNo,  
            int perPageCount) {  

        return getCollection(collection).find(q, fileds)  
                .skip((pageNo - 1) * perPageCount).limit(perPageCount)  
                .toArray();  
    }  
}

這只是一個簡單的mongodb工具類,還有很多的不足,只是讀者可以先體驗一下mongodb的操作,之後會詳細討論。