java操作mongodb實(shí)現(xiàn)CURD功能實(shí)例
先下載相應(yīng)的驅(qū)動(dòng):官網(wǎng)上下載:http://central.maven.org/maven2/org/mongodb/mongo-java-driver/
本文使用mongo-2.10.1.jar版本:
下面有詳細(xì)代碼的,每個(gè)方法可以單獨(dú)執(zhí)行。其中為了方便運(yùn)行,每個(gè)方法中都重新鏈接數(shù)據(jù)庫,而沒有再提出來,因?yàn)樵诖说哪康氖菫榱苏J(rèn)識(shí)mongodb而已。
package com.mongo.dao;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;
/**
* 對(duì)基本實(shí)體的存儲(chǔ)測(cè)試
* @author lhy
*
*/
public class EntityTest {
public static void main(String[] args) throws Exception{
delete();
}
/**
* 保存實(shí)體對(duì)象
* @throws Exception
*/
public static void saveEntity() throws Exception{
//第一:實(shí)例化mongo對(duì)象,連接mongodb服務(wù)器 包含所有的數(shù)據(jù)庫
//默認(rèn)構(gòu)造方法,默認(rèn)是連接本機(jī),端口號(hào),默認(rèn)是27017
//相當(dāng)于Mongo mongo =new Mongo("localhost",27017)
Mongo mongo =new Mongo();
//第二:連接具體的數(shù)據(jù)庫
//其中參數(shù)是具體數(shù)據(jù)庫的名稱,若服務(wù)器中不存在,會(huì)自動(dòng)創(chuàng)建
DB db=mongo.getDB("myMongo");
//第三:操作具體的表
//在mongodb中沒有表的概念,而是指集合
//其中參數(shù)是數(shù)據(jù)庫中表,若不存在,會(huì)自動(dòng)創(chuàng)建
DBCollection collection=db.getCollection("user");
//添加操作
//在mongodb中沒有行的概念,而是指文檔
BasicDBObject document=new BasicDBObject();
document.put("id", 1);
document.put("name", "小明");
// //然后保存到集合中
// // collection.insert(document);
//當(dāng)然我也可以保存這樣的json串
/* {
"id":1,
"name","小明",
"address":
{
"city":"beijing",
"code":"065000"
}
}*/
//實(shí)現(xiàn)上述json串思路如下:
//第一種:類似xml時(shí),不斷添加
BasicDBObject addressDocument=new BasicDBObject();
addressDocument.put("city", "beijing");
addressDocument.put("code", "065000");
document.put("address", addressDocument);
//然后保存數(shù)據(jù)庫中
collection.insert(document);
//第二種:直接把json存到數(shù)據(jù)庫中
/* String jsonTest="{'id':1,'name':'小明',"+
"'address':{'city':'beijing','code':'065000'}"+
"}";
DBObject dbobjct=(DBObject)JSON.parse(jsonTest);
collection.insert(dbobjct);*/
}
/**
* 遍歷所有的
* @throws Exception
*/
public static void selectAll() throws Exception{
//第一:實(shí)例化mongo對(duì)象,連接mongodb服務(wù)器 包含所有的數(shù)據(jù)庫
//默認(rèn)構(gòu)造方法,默認(rèn)是連接本機(jī),端口號(hào),默認(rèn)是27017
//相當(dāng)于Mongo mongo =new Mongo("localhost",27017)
Mongo mongo =new Mongo();
//第二:連接具體的數(shù)據(jù)庫
//其中參數(shù)是具體數(shù)據(jù)庫的名稱,若服務(wù)器中不存在,會(huì)自動(dòng)創(chuàng)建
DB db=mongo.getDB("myMongo");
//第三:操作具體的表
//在mongodb中沒有表的概念,而是指集合
//其中參數(shù)是數(shù)據(jù)庫中表,若不存在,會(huì)自動(dòng)創(chuàng)建
DBCollection collection=db.getCollection("user");
//查詢操作
//查詢所有
//其中類似access數(shù)據(jù)庫中游標(biāo)概念
DBCursor cursor=collection.find();
System.out.println("mongodb中的user表結(jié)果如下:");
while(cursor.hasNext()){
System.out.println(cursor.next());
}
}
/**
* 根據(jù)條件查詢
* @throws Exception
*/
public static void selectPart() throws Exception{
//第一:實(shí)例化mongo對(duì)象,連接mongodb服務(wù)器 包含所有的數(shù)據(jù)庫
//默認(rèn)構(gòu)造方法,默認(rèn)是連接本機(jī),端口號(hào),默認(rèn)是27017
//相當(dāng)于Mongo mongo =new Mongo("localhost",27017)
Mongo mongo =new Mongo();
//第二:連接具體的數(shù)據(jù)庫
//其中參數(shù)是具體數(shù)據(jù)庫的名稱,若服務(wù)器中不存在,會(huì)自動(dòng)創(chuàng)建
DB db=mongo.getDB("myMongo");
//第三:操作具體的表
//在mongodb中沒有表的概念,而是指集合
//其中參數(shù)是數(shù)據(jù)庫中表,若不存在,會(huì)自動(dòng)創(chuàng)建
DBCollection collection=db.getCollection("user");
//可以直接put
BasicDBObject queryObject=new BasicDBObject();
queryObject.put("id", 1);
DBCursor querycursor=collection.find(queryObject);
System.out.println("條件查詢?nèi)缦拢?);
while(querycursor.hasNext()){
System.out.println(querycursor.next());
}
}
/**
* 更新操作
* 更新一條記錄
* @throws Exception
*/
public static void update()throws Exception{
//第一:實(shí)例化mongo對(duì)象,連接mongodb服務(wù)器 包含所有的數(shù)據(jù)庫
//默認(rèn)構(gòu)造方法,默認(rèn)是連接本機(jī),端口號(hào),默認(rèn)是27017
//相當(dāng)于Mongo mongo =new Mongo("localhost",27017)
Mongo mongo =new Mongo();
//第二:連接具體的數(shù)據(jù)庫
//其中參數(shù)是具體數(shù)據(jù)庫的名稱,若服務(wù)器中不存在,會(huì)自動(dòng)創(chuàng)建
DB db=mongo.getDB("myMongo");
//第三:操作具體的表
//在mongodb中沒有表的概念,而是指集合
//其中參數(shù)是數(shù)據(jù)庫中表,若不存在,會(huì)自動(dòng)創(chuàng)建
DBCollection collection=db.getCollection("user");
//更新后的對(duì)象
// 第一種更新方式
BasicDBObject newBasicDBObject =new BasicDBObject();
newBasicDBObject.put("id", 2);
newBasicDBObject.put("name", "小紅");
collection.update(new BasicDBObject().append("id", 1),newBasicDBObject);
// 第二種更新方式
// 更新某一個(gè)字段
// BasicDBObject newBasicDBObject =new BasicDBObject().append("$set",new BasicDBObject().append("name", "小紅") );
// collection.update(new BasicDBObject().append("id", 1).append("name", "小明"),newBasicDBObject);
DBCursor querycursor1=collection.find();
System.out.println("更新后結(jié)果如下:");
while(querycursor1.hasNext()){
System.out.println(querycursor1.next());
}
}
/**
* 刪除文檔,其中包括刪除全部或刪除部分
* @throws Exception
*/
public static void delete() throws Exception{
//第一:實(shí)例化mongo對(duì)象,連接mongodb服務(wù)器 包含所有的數(shù)據(jù)庫
//默認(rèn)構(gòu)造方法,默認(rèn)是連接本機(jī),端口號(hào),默認(rèn)是27017
//相當(dāng)于Mongo mongo =new Mongo("localhost",27017)
Mongo mongo =new Mongo();
//第二:連接具體的數(shù)據(jù)庫
//其中參數(shù)是具體數(shù)據(jù)庫的名稱,若服務(wù)器中不存在,會(huì)自動(dòng)創(chuàng)建
DB db=mongo.getDB("myMongo");
//第三:操作具體的表
//在mongodb中沒有表的概念,而是指集合
//其中參數(shù)是數(shù)據(jù)庫中表,若不存在,會(huì)自動(dòng)創(chuàng)建
DBCollection collection=db.getCollection("user");
BasicDBObject queryObject1=new BasicDBObject();
queryObject1.put("id", 2);
queryObject1.put("name","小紅");
//刪除某一條記錄
collection.remove(queryObject1);
//刪除全部
//collection.drop();
DBCursor cursor1=collection.find();
System.out.println("刪除后的結(jié)果如下:");
while(cursor1.hasNext()){
System.out.println(cursor1.next());
}
}
}
- ThinkJS中如何使用MongoDB的CURD操作
- Mongodb 數(shù)據(jù)類型及Mongoose常用CURD
- PHP操作MongoDB實(shí)現(xiàn)增刪改查功能【附php7操作MongoDB方法】
- mongodb+php實(shí)現(xiàn)簡(jiǎn)單的增刪改查
- nodejs操作mongodb的增刪改查功能實(shí)例
- Java連接MongoDB進(jìn)行增刪改查的操作
- MongoDB.NET 2.2.4驅(qū)動(dòng)版本對(duì)Mongodb3.3數(shù)據(jù)庫中GridFS增刪改查
- PHP簡(jiǎn)單操作MongoDB的方法(安裝及增刪改查)
- MongoDB簡(jiǎn)單操作示例【連接、增刪改查等】
- mongodb數(shù)據(jù)庫入門之CURD簡(jiǎn)單操作示例
相關(guān)文章
Java Spring Boot實(shí)現(xiàn)簡(jiǎn)易掃碼登錄詳解
這篇文章主要為大家詳細(xì)介紹了java Spring Boot實(shí)現(xiàn)app掃碼登錄功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-09-09
Java應(yīng)用打包后運(yùn)行需要注意編碼問題
這篇文章主要介紹了 Java應(yīng)用打包后運(yùn)行需要注意編碼問題的相關(guān)資料,需要的朋友可以參考下2016-12-12
Spring事務(wù)注解@Transactional失效的八種場(chǎng)景分析
最近在開發(fā)采用Spring框架的項(xiàng)目中,使用了@Transactional注解,但發(fā)現(xiàn)事務(wù)注解失效了,所以這篇文章主要給大家介紹了關(guān)于Spring事務(wù)注解@Transactional失效的八種場(chǎng)景,需要的朋友可以參考下2021-05-05
Java IO文件過濾器對(duì)命令設(shè)計(jì)模式的使用
java io流里面使用到了很多的設(shè)計(jì)模式,最典型的就是裝飾模式,還有命令模式,下面分兩部分來講Java IO文件過濾器對(duì)命令設(shè)計(jì)模式的使用,一起看看吧2017-06-06
詳解堆排序算法原理及Java版的代碼實(shí)現(xiàn)
如果將堆理解為二叉樹,那么樹中任一非葉結(jié)點(diǎn)的關(guān)鍵字均不大于(或不小于)其左右孩子(若存在)結(jié)點(diǎn)的關(guān)鍵字,堆排序的時(shí)間復(fù)雜度為O(N*logN),這里我們就來詳解堆排序算法原理及Java版的代碼實(shí)現(xiàn)2016-06-06
java使用正則表達(dá)式判斷手機(jī)號(hào)的方法示例
這篇文章主要介紹了java使用正則表達(dá)式判斷手機(jī)號(hào)的方法,分析了手機(jī)號(hào)碼段的原理及java使用正則表達(dá)式針對(duì)手機(jī)號(hào)的匹配操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-06-06
elasticsearch節(jié)點(diǎn)的transport請(qǐng)求發(fā)送處理分析
這篇文章主要為大家介紹了elasticsearch節(jié)點(diǎn)的transport請(qǐng)求發(fā)送處理分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04

