如何用Java操作MongoDB(1)(转自:http://database.51cto.com/art/201106/266933.htm)

Java操作MongoDB实战
本文介绍如何使用Java进行MongoDB数据库的基本操作,包括环境搭建、简单查询及CRUD操作示例。

上一篇文章介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过前一篇文章我们对MongoDB有了全面的认识和理解。现在我们就用Java来操作MongoDB的数据。

开发环境:

  1. System:Windows
  2. IDE:eclipse、MyEclipse 8
  3. Database:mongoDB

开发依赖库:

  1. JavaEE5、mongo-2.5.3.jar、junit-4.8.2.jar
  2. Email:hoojo_@126.com
  3. Blog:http://blog.youkuaiyun.com/IBM_hoojo

一、准备工作

1、 首先,下载mongoDB对Java支持的驱动包

驱动包下载地址:https://github.com/mongodb/mongo-java-driver/downloads

mongoDB对Java的相关支持、技术:http://www.mongodb.org/display/DOCS/Java+Language+Center

驱动源码下载:https://download.github.com/mongodb-mongo-java-driver-r2.6.1-7-g6037357.zip

在线查看源码:https://github.com/mongodb/mongo-java-driver

2、 下面建立一个JavaProject工程,导入下载下来的驱动包。即可在Java中使用mongoDB,目录如下:

#FormatImgID_0#

二、Java操作MongoDB示例

在本示例之前你需要启动mongod.exe的服务,启动后,下面的程序才能顺利执行;

1、 建立SimpleTest.java,完成简单的mongoDB数据库操作

Mongo mongo = new Mongo();

这样就创建了一个MongoDB的数据库连接对象,它默认连接到当前机器的localhost地址,端口是27017。

DB db = mongo.getDB(“test”);

这样就获得了一个test的数据库,如果mongoDB中没有创建这个数据库也是可以正常运行的。如果你读过上一篇文章就知道,mongoDB可以在没有创建这个数据库的情况下,完成数据的添加操作。当添加的时候,没有这个库,mongoDB会自动创建当前数据库。

得到了db,下一步我们要获取一个“聚集集合DBCollection”,通过db对象的getCollection方法来完成。

DBCollection users = db.getCollection("users");

这样就获得了一个DBCollection,它相当于我们数据库的“表”。

查询所有数据

package com.hoo.test; import java.net.UnknownHostException; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.Mongo; import com.mongodb.MongoException; import com.mongodb.util.JSON; /** * function:MongoDB 简单示例 * @author hoojo * @createDate 2011-5-24 下午02:42:29 * @file SimpleTest.java * @package com.hoo.test * @project MongoDB * @blog http://blog.youkuaiyun.com/IBM_hoojo * @email hoojo_@126.com * @version 1.0 */ public class SimpleTest { public static void main(String[] args) throws UnknownHostException, MongoException { Mongo mg = new Mongo(); //查询所有的Database for (String name : mg.getDatabaseNames()) { System.out.println("dbName: " + name); } DB db = mg.getDB("test"); //查询所有的聚集集合 for (String name : db.getCollectionNames()) { System.out.println("collectionName: " + name); } DBCollection users = db.getCollection("users"); //查询所有的数据 DBCursor cur = users.find(); while (cur.hasNext()) { System.out.println(cur.next()); } System.out.println(cur.count()); System.out.println(cur.getCursorId()); System.out.println(JSON.serialize(cur)); } }

2、完成CRUD操作,首先建立一个MongoDB4CRUDTest.java,基本测试代码如下:

package com.hoo.test; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import org.bson.types.ObjectId; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.mongodb.BasicDBObject; import com.mongodb.Bytes; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoException; import com.mongodb.QueryOperators; import com.mongodb.util.JSON; /** * function:实现MongoDB的CRUD操作 * @author hoojo * @createDate 2011-6-2 下午03:21:23 * @file MongoDB4CRUDTest.java * @package com.hoo.test * @project MongoDB * @blog http://blog.youkuaiyun.com/IBM_hoojo * @email hoojo_@126.com * @version 1.0 */ public class MongoDB4CRUDTest { private Mongo mg = null; private DB db; private DBCollection users; @Before public void init() { try { mg = new Mongo(); //mg = new Mongo("localhost", 27017); } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } //获取temp DB;如果默认没有创建,mongodb会自动创建 db = mg.getDB("temp"); //获取users DBCollection;如果默认没有创建,mongodb会自动创建 users = db.getCollection("users"); } @After public void destory() { if (mg != null) mg.close(); mg = null; db = null; users = null; System.gc(); } public void print(Object o) { System.out.println(o); } }




你提供的配置片段是一个典型的 MongoDB 配置块,看起来是 YAML 格式,用于 Spring Boot、Micronaut 或其他基于 YAML 的 Java 框架中配置 MongoDB。 你给出的部分如下: ```yaml data: mongodb: uri: mongodb://192.168.2.190:17017 database: Location authentication-database: admin ``` 这个片段中已经包含了: - `uri`: MongoDB 的连接地址 - `database`: 要连接的数据库名称 - `authentication-database`: 认证数据库,即用户创建所在的数据库(通常是 `admin`) --- ## ✅ 补全建议(常见完整 MongoDB 配置示例) 下面是一个更完整的 MongoDB YAML 配置示例,包含认证、副本集、超时设置、SSL、连接池等常见参数: ```yaml spring: data: mongodb: uri: mongodb://myUser:myPassword@192.168.2.190:17017,192.168.2.236:17017,192.168.2.179:17017/Location?replicaSet=mongos&connectTimeoutMS=30000&socketTimeoutMS=30000&maxIdleTimeMS=60000 database: Location authentication-database: admin options: ssl: false read-preference: primary write-concern: w: 2 wtimeout: 5000 ``` --- ## ✅ 配置字段详解 | 字段 | 说明 | |------|------| | `uri` | MongoDB 连接地址,支持用户名、密码、副本集、多个节点等 | | `database` | 应用程序使用的数据库名称 | | `authentication-database` | 认证数据库,通常是 `admin`,也可以是其他数据库 | | `ssl` | 是否启用 SSL 加密连接,默认 `false` | | `read-preference` | 读偏好设置,如 `primary`、`secondary` 等 | | `write-concern` | 写确认机制,如 `w: 2` 表示至少写入两个节点 | | `connectTimeoutMS` | 连接超时时间(毫秒) | | `socketTimeoutMS` | 套接字超时时间(毫秒) | | `maxIdleTimeMS` | 连接池中连接的最大空闲时间(毫秒) | --- ## ✅ 示例:使用 Spring Boot 的完整配置(application.yml) ```yaml spring: data: mongodb: uri: mongodb://myUser:myPassword@192.168.2.190:17017,192.168.2.236:17017,192.168.2.179:17017/Location?replicaSet=mongos database: Location authentication-database: admin options: connect-timeout: 30000 socket-timeout: 30000 ssl: false read-preference: secondary ``` --- ## ✅ 注意事项 - 如果你使用的是 Spring Boot 2.x 以上版本,`spring.data.mongodb` 是标准命名空间。 - 如果你使用的是 Spring Boot 3.x 或更高版本,可能需要使用 `spring.mongodb` 而不是 `spring.data.mongodb`。 - 如果你使用的是 Micronaut 或 Quarkus,配置方式略有不同,但 YAML 结构类似。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值