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的操作,之後會詳細討論。