java操作Mongo
- 不足之處歡迎留言
1、文檔型資料庫
- MongoDB 是一個跨平台的,面向文檔的資料庫,是目前 NoSQL 資料庫産品中最熱 門 的一種。它介于關系資料庫和非關系資料庫之間,是非關系資料庫當中功能最豐富,最 像關 系資料庫的産品。它支援的資料結構非常松散,是類似 JSON 的 BSON 格式,是以可以 存 儲比較複雜的資料類型。
- MongoDB 的官方網站位址:http://www.mongodb.org/
- MongoDB與MySQL資料庫邏輯結構概念的對比
MongoDB | 關系型資料庫Mysql |
資料庫 | 資料庫 |
集合(collections) | 表(table) |
文檔(document) | 行(row) |
2、mongo服務啟動和停止
2.1、啟動
前提:配置好環境變量path
- 任務管理器:啟動mongo服務
- cmd:直接輸入mongo或mongod --dbpath data所在目錄
2.2、停止
- 任務管理器:停止mongo服務
- cmd:
- 1)切換到admin權限,db.shutdownServer()
- 2)檢視程序,使用kill指令,不能使用kill -9
3、常用指令
- 模糊查詢:dp.集合名.find({字段:/str/})
- 以str開頭:db.集合名.find({字段:/^str/})
- 修改某條記錄:db.集合名.update(條件,修改後的資料),$set修改器
db.spit.update({userdi:“1”},{$set:{name:“小明”}})
- 包含:$in:[]
- 不包含:$nin:[]
- 條件連接配接:$and[條件1,條件2]、$or[條件1,條件2]
- BasicDBObject.put():表示一個具體的記錄。用來建構查詢條件。相當于map.
- BasicDBList.add():可以存放多個BasicDBObject條件
4、java連接配接操作mongo
4.1、核心依賴
- mongodb-driver是mongo官方推出的java連接配接mongoDB的驅動包,相當于JDBC驅動
4.2、操作步驟
- 首先確定mongo中有資料庫并有要操作的表(本例:spitdb庫,spit表)
(1)建立連接配接
- MongoClient mongoClient = new MongoClient("localhost");
(2)打開資料庫
- MongoDatabase spitdb = mongoClient.getDatabase("spitdb");
(3)擷取某個集合(表)
- MongoCollection<Document> spit = spitdb.getCollection("spit");
(4)查詢擷取集合中的文檔集合(表中資料記錄)
- FindIterable<Document> documents = spit.find();
- FindIterable<Document> documents = spit.find(條件Bson格式);
(5)關閉連接配接
- mongoClient.close();
4.3、條件查詢
(1)建構查詢條件
- 【例1-----userid為1013的】
- BasicDBObject bson = new BasicDBObject("userid","1013");
- 【例2-----浏覽量大于1000】
- BasicDBObject bson = new BasicDBObject("visits",new BasicDBObject("$gt",1000));
(2)查詢集合中符合條件的文檔集合(表中資料記錄)
- FindIterable<Document> documents = spit.find(bson);
(3)BasicDBObject:表示一個具體的記錄。用來建構查詢條件。相當于map.
(4)BasicDBList:可以存放多個BasicDBObject條件。
4.4、插入資料
(1)将資料轉換為mongo中對應的document記錄
- Document document = new Document(map);
(2)将document記錄插入表中
- spit.insertOne(document);
(3)關閉連接配接
5、總潔
- 遇到的異常
bug1:Exception in monitor thread while connecting to server 192.168.1.160:27017
com.mongodb.MongoSocketOpenException: Exception opening socket
原因:本地測試ip隻能是localhost或者127.0.0.1,192.168.1.160不行。
bug2:java輸出Mongo中文亂碼或為問号
原因:BSON隻支援UTF8編碼。