簡單學(xué)習(xí)Java+MongoDB
MongoDB一些概念
下面以MongoDB和MySql的對比來說明
MySQL MongoDB
database(數(shù)據(jù)庫) db(數(shù)據(jù)庫)
table(表) collection(集合)
row(行記錄) document(文檔)
column(列) field(字段)
primary key(指定主鍵) "_id" : ObjectId("******") 自動(dòng)生成內(nèi)置主鍵
Mysql的數(shù)據(jù)形式如下

同樣的數(shù)據(jù)在MongoDB下類似于JSON鍵值對,叫BSON,如下

MongoDB的CRUD
windows下安裝成功后,使用mongod命令啟動(dòng)服務(wù),使用mongo命令默認(rèn)連接到test庫
1,創(chuàng)建集合
創(chuàng)建user集合:db.createCollection("user") //不需要定義字段
2,插入
插入name=wangxu,age=27的記錄:db.user.insert({"name":"wangxu","age":27})
3,查詢
查詢?nèi)浚篸b.user.find()
查詢name=wangxu的記錄:db.user.find({"name":"wangxu"})
4,更新
將name=wangxu的記錄age更新成30:db.user.update({name:"wangxu"},{"$set":{"age":30}})
5,刪除
刪除name=wangxu的記錄:db.user.remove({"name":"wangxu"})
刪除全部:db.user.remove()
6,刪除集合
刪除user集合: db.user.drop()
Java調(diào)用MongoDB
引入MongoDB的Java驅(qū)動(dòng)包后,測試代碼如下:
package com.wx.test;
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
/**
* 測試mongodb 測試點(diǎn):增加,查詢,更新,刪除
*
* @author wangxu
* @date 2016-3-27
*/
public class TestMongoDB {
public static void main(String[] args) {
// 建立連接,MongoDB默認(rèn)是沒有用戶名及密碼
MongoClient mongoClient = new MongoClient("localhost", 27017);
// 獲取test庫
MongoDatabase db = mongoClient.getDatabase("test");
// 創(chuàng)建集合
db.createCollection("user");
// 獲取集合
MongoCollection collection = db.getCollection("user");
// 插入文檔(支持多條)
Document document = new Document("name", "wangxu").append("age", "27");
Document document2 = new Document("name", "wangxu_java").append("age",
"27");
List<Document> documents = new ArrayList<>();
documents.add(document);
documents.add(document2);
collection.insertMany(documents);
// 更新wangxu的age為30
collection.updateMany(Filters.eq("name", "wangxu"), new Document(
"$set", new Document("age", 30)));
// 查詢文檔
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
// 遍歷游標(biāo)
while (mongoCursor.hasNext()) {
Document doc = mongoCursor.next();
System.out.println("name=" + doc.get("name"));
}
// 刪除wangxu_java
collection.deleteMany(Filters.eq("name", "wangxu_java"));
}
}
關(guān)于Java驅(qū)動(dòng)包的一個(gè)疑問
MongoClient mongoClient = new MongoClient("域不存在", 27017); //建立連接
當(dāng)我保存上面的代碼時(shí),發(fā)現(xiàn)不需要處理異常,開始我以為異常被設(shè)計(jì)成了“非檢查異?!保\(yùn)行時(shí)會(huì)拋出來,最后測試發(fā)現(xiàn)根本不會(huì)拋任何異常,后續(xù)的CRUD操作時(shí)會(huì)拋異常,但幾乎都是非檢查異常,個(gè)人感覺這種設(shè)計(jì)是不是有點(diǎn)不符合Java的異常分類機(jī)制?
- java操作mongodb基礎(chǔ)(查詢 排序 輸出list)
- java查詢mongodb中的objectid示例
- MongoDB支持的java數(shù)據(jù)類型和測試?yán)?/a>
- Java操作MongoDB數(shù)據(jù)庫示例分享
- java操作mongodb實(shí)現(xiàn)CURD功能實(shí)例
- Java操作MongoDB模糊查詢和分頁查詢
- java實(shí)現(xiàn)mongodb的數(shù)據(jù)庫連接池
- java操作mongodb時(shí),對象bean和DBObject相互轉(zhuǎn)換的方法(推薦)
- Mongodb3.0.5 副本集搭建及spring和java連接副本集配置詳細(xì)介紹
- Java連接MongoDB進(jìn)行增刪改查的操作
- Java操作Mongodb數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)的增刪查改功能示例
相關(guān)文章
Java實(shí)戰(zhàn)之實(shí)現(xiàn)物流配送系統(tǒng)示例詳解
這篇文章主要介紹了一個(gè)java實(shí)戰(zhàn)項(xiàng)目:通過java、SSM、JSP、mysql和redis實(shí)現(xiàn)一個(gè)物流配送系統(tǒng)。文中的示例代碼非常詳細(xì),需要的朋友可以參考一下2021-12-12
Java中BigDecimal的equals方法和compareTo方法的區(qū)別詳析
這篇文章主要給大家介紹了關(guān)于Java中BigDecimal的equals方法和compareTo方法區(qū)別的相關(guān)資料,對于BigDecimal的大小比較,用equals方法的話會(huì)不僅會(huì)比較值的大小,還會(huì)比較兩個(gè)對象的精確度,而compareTo方法則不會(huì)比較精確度,只比較數(shù)值的大小,需要的朋友可以參考下2023-11-11
SpringBoot中使用Flyway進(jìn)行數(shù)據(jù)庫遷移的詳細(xì)流程
本文介紹了如何在Spring Boot項(xiàng)目中使用Flyway進(jìn)行數(shù)據(jù)庫遷移,Flyway通過SQL腳本管理數(shù)據(jù)庫變更,支持自動(dòng)執(zhí)行和版本控制,避免了手動(dòng)執(zhí)行SQL腳本的錯(cuò)誤和維護(hù)困難,需要的朋友可以參考下2025-02-02
SpringBoot線程池和Java線程池的使用和實(shí)現(xiàn)原理解析
這篇文章主要介紹了SpringBoot線程池和Java線程池的用法和實(shí)現(xiàn)原理,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
使用SpringBoot中web項(xiàng)目推薦目錄結(jié)構(gòu)的問題
這篇文章主要介紹了SpringBoot中web項(xiàng)目推薦目錄結(jié)構(gòu)的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01
解決gateway報(bào)netty堆外內(nèi)存溢出io.netty.util.internal.OutOfDirectMemor
這篇文章主要介紹了解決gateway報(bào)netty堆外內(nèi)存溢出io.netty.util.internal.OutOfDirectMemoryError,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12

