MongDD的语法很多,我们只需要记一些常用的即可,在实际开发中还是使用Java面向对象的方式来操作Mongodb。
1.小试牛刀
1.1.导入依赖 在 Java 程序中如果要使用 MongoDB,你需要确保已经安装了 Java 环境及 MongoDB JDBC 驱动,创建一个普通java项目,导入如下依赖
org.mongodb
mongo-java-driver
3.12.10
1.2.连接MongDB 不使用账号连接:
mongodb://localhost:27017
, 使用账号连接 mongodb://账号:密码@localhost:27017/
//1.创建客户端 : mongodb://用户名:密码@127.0.0.1:27017
//如果没有账号:mongodb://127.0.0.1:27017
com.mongodb.client.MongoClient mongoClient =
MongoClients.create("mongodb://testuser:testuser@127.0.0.1:27017");
1.3.查询文档 通过客户端链接数据库,然后查询文档
//2.链接数据库tempdb
MongoDatabase userDB = mongoClient.getDatabase("tempdb");
//3.获取集合 user
FindIterable documentFindIterable = userDB.getCollection("user").find();
//4.拿到文档迭代器
MongoCursor iterator = documentFindIterable.iterator();
//5.遍历文档
while(iterator.hasNext()){
System.out.println(iterator.next());
}
2.MongDB的CRUD
2.1.数据库CRUD 通过listDatabases查询所有数据库
//列出所有数据库
ListDatabasesIterable listDatabasesIterable = mongoClient.listDatabases();
MongoCursor iterator1 = listDatabasesIterable.iterator();
while(iterator1.hasNext()){
System.out.println(iterator1.next());
}
通过 getDatabase 获取指定数据库
MongoDatabase empdb = mongoClient.getDatabase("empdb");
System.out.println(empdb.getName());
drop删除数据库
MongoDatabase empdb = mongoClient.getDatabase("empdb");
empdb.drop();
创建数据库 ,直接使用 mongoClient.getDatabase(“db”) ,当添加数据的时候会自动创建数据库
MongoDatabase testdb = mongoClient.getDatabase("testdb");
testdb.createCollection("user");
2.2.集合CRUD 查看集合
MongoCursor iterator2 = userDB.listCollections().iterator();
while (iterator2.hasNext()){
System.out.println(iterator2.next());
}
获取某个集合
MongoCollection user = userDB.getCollection("集合名");
添加集合
userDB.createCollection("user");
//集合名,固定大小 , 最大文档数 ,最大字节数
userDB.createCollection("user", new CreateCollectionOptions().capped(true).maxDocuments(1000).sizeInBytes(1024*1024*1024));
//========================================================================================================
//验证规则,添加的文档中必须出现username和 age字段
ValidationOptions validationOptions = new ValidationOptions().validator(Filters.or(Filters.exists("username"),Filters.exists("age")));
userDB.createCollection("user",
//集合名,固定大小 , 最大文档数 ,最大字节数
new CreateCollectionOptions().capped(true).maxDocuments(1000).sizeInBytes(1024*1024*1024)
//添加的文档必须满足的验证规则
.validationOptions(validationOptions)
);
删除集合
//拿到集合
MongoCollection user = userDB.getCollection("user");
//删除集合
user.drop();
2.3.文档CRUD 创建文档
//创建集合
userDB.createCollection("tempcol");
//拿到集合
MongoCollection tempcol = userDB.getCollection("tempcol");
//创建文档
Document doc = new Document();
doc.append("_id",1);
doc.append("username","zs");
doc.append("age",18).append("info",new Document("x","22").append("y","33"));
//添加文档
tempcol.insertOne(doc);
获取文档
//构建查询的内容
Document bson = new Document();
bson.put("_id",1);
//拿到集合,执行find
FindIterable documentFindIterable1 = userDB.getCollection("tempcol").find(bson);
//遍历结果
MongoCursor iterator3 = documentFindIterable1.iterator();
while(iterator3.hasNext()){
System.out.println(iterator3.next());
}//组装条件
MongoCollection tempcol = userDB.getCollection("tempcol");
Bson filter = Filters.and(Filters.eq("sex", 1), Filters.gte("age", 18));
FindIterable documentFindIterable = tempcol.find(filter);
//获取文档数量
userDB.getCollection("tempcol").countDocuments();
删除文档
//构建条件文档
Bson filter = Filters.eq("_id", 1);
//执行文档删除
DeleteResult result = userDB.getCollection("tempcol").deleteOne(bson);
System.out.println(result);
//删除符合条件的第一个文档
userDB.getCollection("tempcol").deleteOne(Filters.eq("likes", 200));
//删除符合条件的所有文档
userDB.getCollection("tempcol").deleteMany (Filters.eq("likes", 200));
修改文档
//过滤条件,_id = 1
Bson filter = Filters.eq("_id", 1);
//把 age 设置为 100
Document update = new Document("$set",new Document("age",100));
//执行修改
UpdateResult updateResult = userDB.getCollection("tempcol").updateOne(filter, update);
System.out.println(updateResult);
【《mongodb经典入门》|四.MongoDB入门-Java操作MongoDB】文章结束,希望对你有所帮助,喜欢的话请给个好评
推荐阅读
- 技术|基于canal实现mysql和es增量数据同步
- 《mongodb经典入门》|五.MongoDB入门-SpringData操作MongoDB
- Qt-数据库应用|Qt数据库应用14-超级自定义委托
- 程序员|普通二本的辛酸Java面试之路,实战篇
- 程序员|【深度思考】普通二本的辛酸Java面试之路,含答案解析
- 大厂面试系列|我的秋招 | 大厂上岸经验一(末流二本)
- 图解 Docker 架构,还有谁不会()
- Android开发笔记|笔记1-Android简介
- 链表|Node.js 流源码解读之可读流