上一篇我们讲了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(); }
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); } } }
4、获取到指定数据库
DB db = mongo.getDB("andyDB");// 获取到数据库
5、遍历数据库中所有的表名
在DBConnection测试类中添加如下测试方法即可:
public void testGetAllTables() { Set<String> tables = db.getCollectionNames(); for (String coll : tables) { System.out.println(coll); } }
6、获取到指定的表
DBCollection table = db.getCollection("person");
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); } }
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); }在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); }
在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); }
在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); }
10、删除对象
可参考db.users.remove({name:"小李"})命令来理解Java操作对象
public void testDelete(){ DBCollection table = db.getCollection("person"); BasicDBObject query = new BasicDBObject("name", "小李"); table.remove(query); }
11、参考
Java + MongoDB Hello World Example(推荐)
12、你可能感兴趣
【MongoDB数据库】如何安装、配置MongoDB
【MongoDB数据库】MongoDB 命令入门初探

如何有效监控MySQL性能?使用mysqladmin、SHOWGLOBALSTATUS、PerconaMonitoringandManagement(PMM)和MySQLEnterpriseMonitor等工具。1.使用mysqladmin查看连接数。2.用SHOWGLOBALSTATUS查看查询数。3.PMM提供详细性能数据和图形化界面。4.MySQLEnterpriseMonitor提供丰富的监控功能和报警机制。

MySQL和SQLServer的区别在于:1)MySQL是开源的,适用于Web和嵌入式系统,2)SQLServer是微软的商业产品,适用于企业级应用。两者在存储引擎、性能优化和应用场景上有显着差异,选择时需考虑项目规模和未来扩展性。

在需要高可用性、高级安全性和良好集成性的企业级应用场景下,应选择SQLServer而不是MySQL。1)SQLServer提供企业级功能,如高可用性和高级安全性。2)它与微软生态系统如VisualStudio和PowerBI紧密集成。3)SQLServer在性能优化方面表现出色,支持内存优化表和列存储索引。

mySqlManagesCharacterSetsetSandCollationsyutusututf-8asthEdeFault,允许ConfigurationAtdataBase,table和columnlevels,AndrequiringCarefullageLignmentToavoidMismatches.1)setDefeaultCharactersetTercharactersetEtCollacterSeteTandColletationForAdataBase.2)conformentcollecharactersettersetertersetcollatertersetcollationcollation

MySQL触发器是与表相关联的自动执行的存储过程,用于在特定数据操作时执行一系列操作。1)触发器定义与作用:用于数据校验、日志记录等。2)工作原理:分为BEFORE和AFTER,支持行级触发。3)使用示例:可用于记录薪资变更或更新库存。4)调试技巧:使用SHOWTRIGGERS和SHOWCREATETRIGGER命令。5)性能优化:避免复杂操作,使用索引,管理事务。

在MySQL中创建和管理用户账户的步骤如下:1.创建用户:使用CREATEUSER'newuser'@'localhost'IDENTIFIEDBY'password';2.分配权限:使用GRANTSELECT,INSERT,UPDATEONmydatabase.TO'newuser'@'localhost';3.修正权限错误:使用REVOKEALLPRIVILEGESONmydatabase.FROM'newuser'@'localhost';然后重新分配权限;4.优化权限:使用SHOWGRA

MySQL适合快速开发和中小型应用,Oracle适合大型企业和高可用性需求。1)MySQL开源、易用,适用于Web应用和中小型企业。2)Oracle功能强大,适合大型企业和政府机构。3)MySQL支持多种存储引擎,Oracle提供丰富的企业级功能。

MySQL相比其他关系型数据库的劣势包括:1.性能问题:在处理大规模数据时可能遇到瓶颈,PostgreSQL在复杂查询和大数据处理上表现更优。2.扩展性:水平扩展能力不如GoogleSpanner和AmazonAurora。3.功能限制:在高级功能上不如PostgreSQL和Oracle,某些功能需要更多自定义代码和维护。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Atom编辑器mac版下载
最流行的的开源编辑器

Dreamweaver Mac版
视觉化网页开发工具

SublimeText3 Linux新版
SublimeText3 Linux最新版