mongodb安裝與使用,mongodb安裝使用
一.MongoDB安裝和啟動
widndows和linux基本相同
1.下載資料庫,
linux:mongodb-linux-x86_64-ubuntu1404-3.0.3.tgz
2.解壓檔案,並且放置到合適的位置
tar -vxf mongodb-linux-x86_64-ubuntu1404-3.0.3.tgz
mv mongodb-linux-x86_64-ubuntu1404-3.0.3 /usr/local/mongodb
3.建立必要得檔案夾以及檔案
資料庫檔案夾:/usr/local/mongodb/data/db
記錄檔:/usr/local/mongodb/data/log/mongodb.log
完了之後記得給檔案夾和檔案授權,否則服務開不起來.
4.設定資料庫位置以及日誌位置並且開啟服務:
bin(linux)->./mongod --port 27017 --dbpath /usr/local/mongodb/data/db --logpath /usr/local/mongodb/data/log/mongodb.log
linux下注意檔案及和檔案讀寫權限.當然開啟服務還有很多參數,不一一列舉.
bin(win)->mongod --port 27017 --dbpath "D:\Program Files\MongoDB\Server\3.0\data\db" --logpath "D:\Program Files\MongoDB\Server\3.0\data\log\MongoDB.log"
5.串連資料庫:
bin(linux)->./mongo
bin(win)->mongo.exe
注意:在windows下建立檔案夾以及記錄檔不再說明操作過程,很簡單.還有一點是在服務啟動以後,不要關閉啟動服務的介面,也不能Ctrl+C,串連資料庫的時候需要新起視窗.當然也可以讓服務後台運行.後台運行命令:nohup ./mongod --port 27017 --dbpath /usr/local/mongodb/data/db --logpath /usr/local/mongodb/data/log/mongodb.log &
6.通過圖形介面的用戶端串連mongodb
windows下可選得比較多,包括robomongo,mongoVUE等等,linux下可用robomongo.直接去官網上下載然後安裝即可.robomongo的優勢是可以直接在軟體中敲shell命令,並且有提示;mongoVUE的優勢是查詢截面清晰,不用敲完整的複雜得shell命令.
7.mongodb的其他指令碼命令
備份:mongodump/恢複:mongorestore
匯入資料:mongoimport -d dbName -c collectionName --file filePath;還有其他很多選擇性參數
匯出資料:mongoexport -d dbName -c collectionName -o filePaht;還有其他很多選擇性參數
匯入匯出資料預設都是json格式的檔案,當然為了適應和其他資料庫的資料互動,可選擇匯入匯出的檔案為CVS檔案。
二.MongoDB的簡單使用
使用mongoDB進行CRUD操作,就是通過執行響應的shell語句,所以實質上是對shell語句的使用.首先需要瞭解mongoDB的幾種簡單對象:db,collection,document.
db:資料庫物件,等同於關聯式資料庫中的資料庫物件
collection:集合對象,等同於關聯式資料庫中的表
document:文檔對象,等同於關聯式資料庫中表中的一行記錄
1、對資料庫的操作:
>db;//查看當前使用的是那個資料庫
>show dbs;//展示所有的資料庫
>use dbName;//使用某個資料庫,如果資料庫不存在,就建立資料庫,所以建立資料庫也是使用這個命令
>db stats();//查看資料庫目前狀態資訊
>db.dropDatabase();//刪除當前的資料庫
2、對集合的操作:
>db.createCollection(collectionName,option);//collectionName是集合名稱,option是選擇性參數,包括資料庫大小等。
>db.collectionName.drop();//刪除集合,其中collectionName是集合的名稱
3、對文檔的操作:
>db.collectionName.insert(document);//向集合中插入資料,其中document(Json)是一個json對象或者數組
>db.collectionName.find(condition);db.collectionName.findOne();db.collectionName.find().pertty();
//查詢記錄,其中condition(Json)為過濾條件,如果不添表示所有。pertty()表示輸出格式最佳化,find還有很多詳細的處理後面介紹。
>db.collectionName.update(condition,updateDate);//更新記錄,其中condition(Json)為過濾條件json格式。updateDate為待更新的資料
//>db.mycol.update({"a":1},{$set:{"b":"B"}});將mycol集合中a欄位為1的對象的b欄位改為"B"
>db.collectionName.remove(condition,justOne);//刪除記錄,其中condition(Json)為過濾條件,justOne(boolean)表示是否只刪除第一條,如果都不添,表示清空集合
>db.collectionName.find().skip(num).limit(num);//分頁查詢,其中num(Number)是起始頁和每頁大小。
>db.collectionName.find(condition,{Key:isHead});//投影,第二個json表示某個欄位是否隱藏,isHead(0/1)表示
>db.collectionName.find().sort({Key:upOrDown});//結果排序,key為排序關鍵字,upOrDown(-1/1)表示升序還是降序
>db.collectionName.ensureIndex({key:upOrDown});//建立索引,key為索引欄位,upOrDown(-1/1)表示升序還是降序
>db.collectionName.aggregate(options);//聚集合函式,options(JsonArray)有多種可選。
//db.mycol.aggregate([{$group:{field:"$by_field",total:{$sum:1}}}]);//按照by_field欄位分組,顯示field列和total列
三.Java操作MongoDB:
在java操作mongo的時候,首先需要有jar包支援。如果使用mave,依賴如下:
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.3.0.RELEASE</version></dependency><dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>2.11.1</version></dependency>
幾個基本java對象的說明如下:
Mongo:資料庫連接對象
Mongo monge = new Mongo("localhost",portl);
DB:資料庫物件
DB db = monge.getDB("dbName");
DBCollection:集合對象
DBCollection collection = db.getCollection("collectionName");
BasicDBObject:文檔對象
BasicDBObject basicDBObject = new BaseDBObject();
DBObject:文檔對象的超類
DBObject dbObject = (DBObject)JSON.parse("json");
DBCursor:操作過程中的遊標
DBCursor cursor = collection.find();
DBCursor cursor = collection.find("conditionJson");
具體使用代碼如下:
@Testpublic void testMongo() throws UnknownHostException{ Mongo mongo = new MongoClient("127.0.0.1", 27017);// 資料庫連接 DB db = mongo.getDB("test");// 資料庫物件 DBCollection coll1 = db.getCollection("coll1");// 擷取集合對象 DBCollection coll2 = db.createCollection("coll2", null); Set<String> collSet = db.getCollectionNames(); DBObject doc1 = new BasicDBObject("a", 1);// 資料庫文檔對象 doc1.put("b", "B"); DBObject doc2 = (DBObject) JSON.parse("{\"a\":2,\"b\":\"B\"}"); // 插入資料 coll1.insert(doc1, doc2); // 修改資料 DBObject update = (DBObject) JSON.parse("{\"a\":2,\"b\":\"updateB\"}"); coll1.update(new BasicDBObject("a", 2), update, true, false); Map<String, Object> map = new HashMap<String, Object>(); map.put("c", "updateC"); map.put("d", 4); coll1.update(new BasicDBObject("a", 1), new BasicDBObject(map)); // 查詢文檔對象 DBObject ref = (DBObject) JSON.parse("{\"b\":\"updateB\"}"); DBCursor cursor = coll1.find(ref); while (cursor.hasNext()) { DBObject obj = cursor.next(); int valuea = (Integer) obj.get("a"); String valueb = (String) obj.get("b"); System.out.println(valuea + "-" + valueb); System.out.println(obj); } // 刪除資料 coll1.remove(new BasicDBObject("a", 1)); coll1.drop();// 清空資料}