MongoDB入门Java操作MongoDB

2022-08-03 09:15:56

MongDD的语法很多,我们只需要记一些常用的即可,在实际开发中还是使用Java面向对象的方式来操作Mongodb。

1.小试牛刀

1.1.导入依赖

在 Java 程序中如果要使用 MongoDB,你需要确保已经安装了 Java 环境及 MongoDB JDBC 驱动,创建一个普通java项目,导入如下依赖

<dependencies><dependency><groupId>org.mongodb</groupId><artifactId>mongo-java-driver</artifactId><version>3.12.10</version></dependency></dependencies>

1.2.连接MongDB

不使用账号连接:mongodb://localhost:27017 , 使用账号连接mongodb://账号:密码@localhost:27017/

//1.创建客户端 : mongodb://用户名:密码@127.0.0.1:27017//如果没有账号:mongodb://127.0.0.1:27017com.mongodb.client.MongoClient mongoClient=MongoClients.create("mongodb://testuser:testuser@127.0.0.1:27017");

1.3.查询文档

通过客户端链接数据库,然后查询文档

//2.链接数据库tempdbMongoDatabase userDB= mongoClient.getDatabase("tempdb");//3.获取集合 userFindIterable<Document> documentFindIterable= userDB.getCollection("user").find();//4.拿到文档迭代器MongoCursor<Document> iterator= documentFindIterable.iterator();//5.遍历文档while(iterator.hasNext()){System.out.println(iterator.next());}

2.MongDB的CRUD

2.1.数据库CRUD

通过listDatabases查询所有数据库

//列出所有数据库ListDatabasesIterable<Document> listDatabasesIterable= mongoClient.listDatabases();MongoCursor<Document> 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<Document> iterator2= userDB.listCollections().iterator();while(iterator2.hasNext()){System.out.println(iterator2.next());}

获取某个集合

MongoCollection<Document> user= userDB.getCollection("集合名");

添加集合

userDB.createCollection("user");//集合名,固定大小 , 最大文档数 ,最大字节数
userDB.createCollection("user",newCreateCollectionOptions().capped(true).maxDocuments(1000).sizeInBytes(1024*1024*1024));//========================================================================================================//验证规则,添加的文档中必须出现username和 age字段ValidationOptions validationOptions=newValidationOptions().validator(Filters.or(Filters.exists("username"),Filters.exists("age")));

userDB.createCollection("user",//集合名,固定大小 , 最大文档数 ,最大字节数newCreateCollectionOptions().capped(true).maxDocuments(1000).sizeInBytes(1024*1024*1024)//添加的文档必须满足的验证规则.validationOptions(validationOptions));

删除集合

//拿到集合MongoCollection<Document> user= userDB.getCollection("user");//删除集合
 user.drop();

2.3.文档CRUD

创建文档

//创建集合
userDB.createCollection("tempcol");//拿到集合MongoCollection<Document> tempcol= userDB.getCollection("tempcol");//创建文档Document doc=newDocument();
        doc.append("_id",1);
        doc.append("username","zs");
        doc.append("age",18).append("info",newDocument("x","22").append("y","33"));//添加文档
tempcol.insertOne(doc);

获取文档

//构建查询的内容Document bson=newDocument();
bson.put("_id",1);//拿到集合,执行findFindIterable<Document> documentFindIterable1= userDB.getCollection("tempcol").find(bson);//遍历结果MongoCursor<Document> iterator3= documentFindIterable1.iterator();while(iterator3.hasNext()){System.out.println(iterator3.next());}//组装条件MongoCollection<Document> tempcol= userDB.getCollection("tempcol");Bson filter=Filters.and(Filters.eq("sex",1),Filters.gte("age",18));FindIterable<Document> 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 = 1Bson filter=Filters.eq("_id",1);//把 age 设置为 100Document update=newDocument("$set",newDocument("age",100));//执行修改UpdateResult updateResult= userDB.getCollection("tempcol").updateOne(filter, update);System.out.println(updateResult);

文章结束,希望对你有所帮助,喜欢的话请给个好评

  • 作者:墨家巨子@俏如来
  • 原文链接:https://blog.csdn.net/u014494148/article/details/122822949
    更新时间:2022-08-03 09:15:56