Rumah pangkalan data tutorial mysql 【MongoDB数据库】JavaMongoDBCRUDExample

【MongoDB数据库】JavaMongoDBCRUDExample

Jun 07, 2016 pm 03:56 PM
mongodb pangkalan data

上一篇我们讲了MongoDB 的命令入门初探,本篇blog将基于上一篇blog所建立的数据库和表完成一个简单的Java MongoDB CRUD Example,利用Java连接MongoDB数据库,并实现创建数据库、获取表、遍历表中的对象、对表中对象进行CRUD操作等例程。 1、下载MongoDB Jav

上一篇我们讲了MongoDB 的命令入门初探,本篇blog将基于上一篇blog所建立的数据库和表完成一个简单的Java MongoDB CRUD Example,利用Java连接MongoDB数据库,并实现创建数据库、获取表、遍历表中的对象、对表中对象进行CRUD操作等例程。

1、下载MongoDB Java 支持驱动包

【gitHub下载地址】https://github.com/mongodb/mongo-java-driver/downloads

2、建立Java工程,并导入jar包

3、连接本地数据库服务器

在控制面板中开启Mongodb服务,具体操作可参考【MongoDB数据库】如何安装、配置MongoDB

		try {
			mongo = new MongoClient("localhost", 27017);// 保证MongoDB服务已经启动
			db = mongo.getDB("andyDB");// 获取到数据库
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
Salin selepas log masuk

3、遍历所有的数据库名

public class DBConnection extends TestCase {

	private MongoClient mongo;
	private DB db ;

	@Override
	protected void setUp() throws Exception {
		// TODO Auto-generated method stub
		super.setUp();
		try {
			mongo = new MongoClient("localhost", 27017);// 保证MongoDB服务已经启动
			db = mongo.getDB("andyDB");// 获取到数据库andyDB
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
	}

	public void testGetAllDB() {
		List<String> dbs = mongo.getDatabaseNames();// 获取到所有的数据库名
		for (String dbname : dbs) {
			System.out.println(dbname);
		}
	}
}
Salin selepas log masuk

4、获取到指定数据库

       DB db = mongo.getDB("andyDB");// 获取到数据库
Salin selepas log masuk

5、遍历数据库中所有的表名

在DBConnection测试类中添加如下测试方法即可:

	public void testGetAllTables() {
		Set<String> tables = db.getCollectionNames();
		for (String coll : tables) {
			System.out.println(coll);
		}
	}
Salin selepas log masuk

6、获取到指定的表

DBCollection table = db.getCollection("person");
Salin selepas log masuk

7、遍历表中所有的对象

public void testFindAll(){
		DBCollection table = db.getCollection("person");
		DBCursor dbCursor = table.find();
		while(dbCursor.hasNext()){
			DBObject dbObject = dbCursor.next();
			//打印该对象的特定字段信息
			System.out.println("name:"+	dbObject.get("name")+",age:"+dbObject.get("age"));
			//打印该对象的所有信息
			System.out.println(dbObject);
		}
	}
Salin selepas log masuk

Console窗口打印消息:

name:jack,age:50.0
{ "_id" : { "$oid" : "537761da2c82bf816b34e6cf"} , "name" : "jack" , "age" : 50.0}
name:小王,age:24
{ "_id" : { "$oid" : "53777096d67d552056ab8916"} , "name" : "小王" , "age" : 24}

8、保存对象

1)保存对象方法一

	public void testSave() {
		DBCollection table = db.getCollection("person");
		BasicDBObject document = new BasicDBObject();
		document.put("name", "小郭");// 能直接插入汉字
		document.put("age", 24);//"age"对应的值是int型
		table.insert(document);
	}
Salin selepas log masuk
在mongodb shell中使用命令查看数据

> db.person.find()
{ "_id" : ObjectId("537761da2c82bf816b34e6cf"), "name" : "jack", "age" : 50 }
{ "_id" : ObjectId("53777096d67d552056ab8916"), "name" : "小王", "age" : 24 }
{ "_id" : ObjectId("5377712cd67d84f62c65c4f6"), "name" : "小郭", "age" : 24 }

2)保存对象方法二

	public void testSave2() {
		DBCollection table = db.getCollection("person");
		BasicDBObject document = new BasicDBObject();//可以添加多个字段
		document.put("name", "小张");// 能直接插入汉字
		document.put("password", "xiaozhang");// 多添加一个字段也是可以的,因为MongoDB保存的是对象;
		document.put("age", "23");//"age"对应的值是String
		table.insert(document);
	}
Salin selepas log masuk

在mongodb shell中使用命令查看数据

> db.person.find()
{ "_id" : ObjectId("537761da2c82bf816b34e6cf"), "name" : "jack", "age" : 50 }
{ "_id" : ObjectId("53777096d67d552056ab8916"), "name" : "小王", "age" : 24 }
{ "_id" : ObjectId("5377712cd67d84f62c65c4f6"), "name" : "小郭", "age" : 24 }
{ "_id" : ObjectId("53777230d67dfe576de5079a"), "name" : "小张", "password" : "xiaozhang", "age" : "23" }

3)保存对象方法三通过添加Map集合的方式添加数据到BasicDBObject

	public void testSave3(){
		DBCollection table = db.getCollection("person");
		
		Map<String,Object> maps = new HashMap<String,Object>();
		maps.put("name", "小李");
		maps.put("password", "xiaozhang");
		maps.put("age", 24);
		
		BasicDBObject document = new BasicDBObject(maps);//这样添加后,对象里的字段是无序的。
		table.insert(document);
	}
Salin selepas log masuk

在mongodb shell中使用命令查看数据

> db.person.find()
{ "_id" : ObjectId("537761da2c82bf816b34e6cf"), "name" : "jack", "age" : 50 }
{ "_id" : ObjectId("53777096d67d552056ab8916"), "name" : "小王", "age" : 24 }
{ "_id" : ObjectId("5377712cd67d84f62c65c4f6"), "name" : "小郭", "age" : 24 }
{ "_id" : ObjectId("53777230d67dfe576de5079a"), "name" : "小张", "password" : "xiaozhang", "age" : "23" }
{ "_id" : ObjectId("537772e9d67df098a26d79a6"), "age" : 24, "name" : "小李", "password" : "xiaozhang" }

9、更新对象

我们可以结合【mongodb shell命令】db.person.update({name:"小李"},{$set:{password:"hello"}})来理解Java是如何操作对象来更新的。{name:"小李"}是一个BasicDBObject,{$set:{password:"hello"}也是一个BasicDBObject,这样理解的话,你就会觉得mongodb shell命令操作和Java操作很相似。

	public void testUpdate() {
		DBCollection table = db.getCollection("person");
		BasicDBObject query = new BasicDBObject();
		query.put("name", "小张");

		BasicDBObject newDocument = new BasicDBObject();
		newDocument.put("age", 23);

		BasicDBObject updateObj = new BasicDBObject();
		updateObj.put("$set", newDocument);
		table.update(query, updateObj);
	}

	// 命令操作:db.person.update({name:"小李"},{$set:{password:"hello"}})
	public void testUpdate2() {
		DBCollection table = db.getCollection("person");
		BasicDBObject query = new BasicDBObject("name", "小张");
		BasicDBObject newDocument = new BasicDBObject("age", 24);
		BasicDBObject updateObj = new BasicDBObject("$set", newDocument);
		table.update(query, updateObj);
	}
Salin selepas log masuk

10、删除对象

可参考db.users.remove({name:"小李"})命令来理解Java操作对象

	public void testDelete(){
		DBCollection table = db.getCollection("person");
		BasicDBObject query = new BasicDBObject("name", "小李");
		table.remove(query);
	}
	
Salin selepas log masuk

11、参考

Java + MongoDB Hello World Example(推荐)

12、你可能感兴趣

【MongoDB数据库】如何安装、配置MongoDB

【MongoDB数据库】MongoDB 命令入门初探

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Perbezaan antara nodejs dan vuejs Perbezaan antara nodejs dan vuejs Apr 21, 2024 am 04:17 AM

Node.js ialah masa jalan JavaScript bahagian pelayan, manakala Vue.js ialah rangka kerja JavaScript sisi klien untuk mencipta antara muka pengguna interaktif. Node.js digunakan untuk pembangunan bahagian pelayan, seperti pembangunan API perkhidmatan belakang dan pemprosesan data, manakala Vue.js digunakan untuk pembangunan sisi klien, seperti aplikasi satu halaman dan antara muka pengguna yang responsif.

iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak Jul 18, 2024 am 05:48 AM

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah

Apa yang perlu dilakukan jika navicat tamat tempoh Apa yang perlu dilakukan jika navicat tamat tempoh Apr 23, 2024 pm 12:12 PM

Penyelesaian untuk menyelesaikan isu tamat tempoh Navicat termasuk: memperbaharui lesen dan menyahpasang semula kemas kini automatik, hubungi Navicat Premium Essentials;

Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP Jun 04, 2024 pm 01:42 PM

Cara menggunakan MySQLi untuk mewujudkan sambungan pangkalan data dalam PHP: Sertakan sambungan MySQLi (require_once) Cipta fungsi sambungan (functionconnect_to_db) Fungsi sambungan panggilan ($conn=connect_to_db()) Laksanakan pertanyaan ($result=$conn->query()) Tutup sambungan ( $conn->close())

Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP Jun 05, 2024 pm 02:16 PM

Untuk mengendalikan ralat sambungan pangkalan data dalam PHP, anda boleh menggunakan langkah berikut: Gunakan mysqli_connect_errno() untuk mendapatkan kod ralat. Gunakan mysqli_connect_error() untuk mendapatkan mesej ralat. Dengan menangkap dan mengelog mesej ralat ini, isu sambungan pangkalan data boleh dikenal pasti dan diselesaikan dengan mudah, memastikan kelancaran aplikasi anda.

Adakah sukar untuk mempelajari nodej di bahagian hadapan? Adakah sukar untuk mempelajari nodej di bahagian hadapan? Apr 21, 2024 am 04:57 AM

Untuk pembangun bahagian hadapan, kesukaran mempelajari Node.js bergantung pada asas JavaScript mereka, pengalaman pengaturcaraan sisi pelayan, kebiasaan baris arahan dan gaya pembelajaran. Keluk pembelajaran termasuk modul peringkat permulaan dan peringkat lanjutan yang memfokuskan pada konsep asas, seni bina bahagian pelayan, penyepaduan pangkalan data dan pengaturcaraan tak segerak. Secara keseluruhan, mempelajari Node.js tidak sukar untuk pembangun yang mempunyai asas yang kukuh dalam JavaScript dan bersedia untuk melaburkan masa dan usaha, tetapi bagi mereka yang kurang pengalaman yang berkaitan, mungkin terdapat cabaran tertentu untuk diatasi.

Bagaimana untuk menggunakan fungsi panggil balik pangkalan data di Golang? Bagaimana untuk menggunakan fungsi panggil balik pangkalan data di Golang? Jun 03, 2024 pm 02:20 PM

Menggunakan fungsi panggil balik pangkalan data di Golang boleh mencapai: melaksanakan kod tersuai selepas operasi pangkalan data yang ditentukan selesai. Tambah tingkah laku tersuai melalui fungsi berasingan tanpa menulis kod tambahan. Fungsi panggil balik tersedia untuk operasi memasukkan, mengemas kini, memadam dan pertanyaan. Anda mesti menggunakan fungsi sql.Exec, sql.QueryRow atau sql.Query untuk menggunakan fungsi panggil balik.

Bagaimanakah Go WebSocket berintegrasi dengan pangkalan data? Bagaimanakah Go WebSocket berintegrasi dengan pangkalan data? Jun 05, 2024 pm 03:18 PM

Cara mengintegrasikan GoWebSocket dengan pangkalan data: Sediakan sambungan pangkalan data: Gunakan pakej pangkalan data/sql untuk menyambung ke pangkalan data. Simpan mesej WebSocket ke pangkalan data: Gunakan pernyataan INSERT untuk memasukkan mesej ke dalam pangkalan data. Dapatkan semula mesej WebSocket daripada pangkalan data: Gunakan pernyataan SELECT untuk mendapatkan semula mesej daripada pangkalan data.

See all articles