
在前面的文章中,我们详细地介绍了 MongoDB 的配置和使用,如果你对 MongoDB 还不是很了解,也没关系,在 MongoDB 中有三个比较重要的名词:数据库、集合、文档!
搞懂这三个名词,基本就可以上手了,今天我们以 Java 语言为例,详细地介绍 Java 客户端改如何操作 MongoDB !
话不多说,直接开撸!
Java 连接 MongoDB 服务器,与我们常用的连接关系型数据库方式类似!
标准 URI 连接语法:
mongodb://username:password@host1:port1,host2:port2,...,hostN:portN/database?options
参数说明:
例如,无密码连接 MongoDB
mongodb://127.0.0.1:27017
使用用户名test,密码test登录 MongoDB 的test_db数据库
mongodb://test:test@127.0.0.1:27017/test_db
无密码连接指定三台服务器 (端口 27017, 27018, 和27019)
mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019
和关系型数据库操作一样,在 Java 程序中如果要使用 MongoDB,先要添加对应的 MongoDB JDBC 驱动器,然后才能继续操作!
在选择的版本号的时候,注意需要和服务器中的安装版本匹配,具体的版本号选择可以从如下地址中获取到最新的版本:mongo-java-driver
- <dependency>
- <groupId>org.mongodb</groupId>
- <artifactId>mongo-java-driver</artifactId>
- <version>3.12.7</version>
- </dependency>
连接数据库的 Java 代码如下:
- private static MongoClient mongoClient;
-
- static {
- try {
- //连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址
- mongoClient = MongoClients.create("mongodb://test:test@127.0.0.1:27017/test_db");
- System.out.println("Connect to database successfully");
- } catch (Exception e) {
- System.err.println( e.getClass().getName() + ": " + e.getMessage() );
- }
- }
上文中采用的是用户名和密码方式登录数据库,因为数据库已经开启了权限验证,因此需要通过用户名和密码才能登录。
com.mongodb.client包里面都帮我们集成好了大部分常用的 api,我们可以通过MongoDatabase类中的createCollection()方法来创建集合。
创建一个tb_role集合,代码片段如下:
- /**
- * 创建集合
- * @param args
- */
- public static void main(String[] args) {
- // 连接到数据库
- MongoDatabase mongoDatabase = mongoClient.getDatabase("test_db");
- System.out.println("Connect to database successfully");
- mongoDatabase.createCollection("tb_role");
- System.out.println("集合创建成功");
- }
如果想删除集合,操作也很简单!
- /**
- * 删除集合
- * @param args
- */
- public static void main(String[] args) {
- // 连接到数据库
- MongoDatabase mongoDatabase = mongoClient.getDatabase("test_db");
- System.out.println("Connect to database successfully");
- mongoDatabase.getCollection("tb_role").drop();
- System.out.println("集合 tb_role 删除成功");
- }
我们可以通过MongoCollection类中的insertMany()方法来插入一个文档。
向tb_role集合中插入文档,代码片段如下:
- /**
- * 插入文档
- * @param args
- */
- public static void main(String[] args) {
- // 连接到数据库
- MongoDatabase mongoDatabase = mongoClient.getDatabase("test_db");
- System.out.println("Connect to database successfully");
- //获取集合
- MongoCollection<Document> collection = mongoDatabase.getCollection("tb_role");
-
- //向集合中插入文档
- Document document = new Document("name", "管理员").
- append("code", "manager").
- append("sort", 100);
- List<Document> documents = new ArrayList<>();
- documents.add(document);
- collection.insertMany(documents);
- System.out.println("文档插入成功");
- }
我们可以通过MongoCollection类中的updateMany()方法来更新集合中的文档。
更新tb_role集合中的指定文档信息,代码片段如下:
- /**
- * 更新文档
- * @param args
- */
- public static void main(String[] args) {
- // 连接到数据库
- MongoDatabase mongoDatabase = mongoClient.getDatabase("test_db");
- System.out.println("Connect to database successfully");
- //获取集合
- MongoCollection<Document> collection = mongoDatabase.getCollection("tb_role");
-
- //更新文档
- collection.updateMany(Filters.eq("code", "manager"), new Document("$set",new Document("name","经理")));
-
- //遍历所有文档
- FindIterable<Document> findIterable = collection.find();
- MongoCursor<Document> mongoCursor = findIterable.iterator();
- while(mongoCursor.hasNext()){
- System.out.println(mongoCursor.next());
- }
- }
上文操作类似于 SQL语句中的update tb_role set name = '经理' where code = 'manager'!
我们可以通过MongoCollection类中的deleteOne()或者deleteMany方法来删除集合中的文档。
删除tb_role集合中的指定文档信息,代码片段如下:
- /**
- * 删除文档
- * @param args
- */
- public static void main(String[] args) {
- // 连接到数据库
- MongoDatabase mongoDatabase = mongoClient.getDatabase("test_db");
- System.out.println("Connect to database successfully");
- //获取集合
- MongoCollection<Document> collection = mongoDatabase.getCollection(&#