任务描述
任务名称 | Mongodb基本操作 |
---|---|
任务要求 | 1、熟练掌握安装和配置MongoDB数据库2、掌握数据库、集合和文档概念3、学会如何创建数据库、删除数据库4、学会集合的基本操作5、学会文档的基本操作 |
任务内容 | 1、Java语言操作MongoDB数据库;2、获取MongoDB中的所有数据库;3、查看指定数据库(即数据库articledb)中的所有集合;4、创建集合;5、删除集合;6、查看文档;7、插入一个文档;8、更新文档;9、删除文档 |
提交内容 | 实践操作 |
任务准备
- 安装和配置好Mongdb数据库
- 熟练Mongodb基本操作
- 有一定的Java基础
- 熟悉Maven项目管理工具
任务实施
1、新建一个Maven工程
打开pom.xml文件,添加依赖:junit和mongodb的java驱动
xml
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mongodb/mongodb-driver -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.12.10</version>
</dependency>
</dependencies>
2、resources目录下创建一个属性文件mongodb.properties,用来存储Mongdb数据库配置信息,内容如下:
ini
host=localhost
port=27017
dbname=articledb
3、在包com.creatorblue.mongodb下新建辅助类MongoUtils.java,用于getMongoClient()获取MongoDB数据库的连接对象,定义一个getMongoConn()方法,用于实现连接指定的MongoDB数据库,内容如下:
ini
private static Properties properties;
private static MongoDatabase mongoDatabase;
private static InputStream stream = null;
private static String host;
private static int port;
private static String dbname;
// 1.创建一个静态代码块,用于初始化工具类中的静态变量,该静态代码块在类加载过程中的初始化阶段 执行,并且只执行一次
static {
// 判断properties集合对象是否为空,为空则创建一个集合对象
if (properties == null) {
properties = new Properties();
}
/*
* 由于我们调用load方法,而load方法底层抛出了一个IOException异常,此异常为编译时期异常
* 所以,我们调用load方法时,需要处理底层抛过来的异常
*/
try {
// 创建一个InputStream字节输入流对象,用于接收mongodb.properties配置文件中的配置参数
stream = MongoUtils.class.getClassLoader().getResourceAsStream("mongodb.properties");
// properties集合对象调用load()方法,将配置参数加载到properties集合中
properties.load(stream);
} catch (IOException e) {
e.printStackTrace();
}
// 根据mongodb.properties配置文件中的key,获取value值
host = properties.getProperty("host");
port = Integer.parseInt(properties.getProperty("port"));
dbname = properties.getProperty("dbname");
}
// 2.定义一个getMongoClient()方法,用于获取MongoDB数据库的连接对象
public static MongoClient getMongoClient() {
// 由于MongoClients对象调用create()方法,该方法的参数是一个字符串,因此这里将host 和port拼接成字符串,再作为参数传入到该方法中
String addr = "mongodb://" + host + ":" + port;
MongoClient mongoClient = MongoClients.create(addr);
return mongoClient;
}
// 3.定义一个getMongoConn()方法,用于实现连接指定的MongoDB数据库
public static MongoDatabase getMongoConn() {
MongoClient mongoClient = getMongoClient();
mongoDatabase = mongoClient.getDatabase(dbname);
return mongoDatabase;
}
}
4、test目录下新建测试类TestMongo.java完成任务中的内容并验证
typescript
private static MongoDatabase mongoDatabase;
public static void main(String[] args) {
mongoDatabase = MongoUtils.getMongoConn();
}
/*
* 获取MongoDB中的所有数据库
*/
@Test
public void getDBs() {
MongoClient mongoClient = MongoUtils.getMongoClient();
MongoIterable<String> databaseNames = mongoClient.listDatabaseNames();
for (String databaseName : databaseNames) {
System.out.println(databaseName);
}
}
/*
* 查看指定数据库(即数据库articledb)中的所有集合
* */
@Test
public void getCollection() {
mongoDatabase = MongoUtils.getMongoConn();
MongoIterable<String> listCollectionNames = mongoDatabase.listCollectionNames();
for (String collectionName : listCollectionNames) {
System.out.println(collectionName.toString());
}
}
/*
* 创建集合
*/
@Test
public void createCollection(){
mongoDatabase = MongoUtils.getMongoConn();
mongoDatabase.createCollection("creatorblue");
}
/*
* 删除集合
*/
@Test
public void dropCollection(){
mongoDatabase = MongoUtils.getMongoConn();
MongoCollection<Document> itcast = mongoDatabase.getCollection("creatorblue");
itcast.drop();
}
/*
* 查看文档
* */
@Test
public void findDocument(){
mongoDatabase = MongoUtils.getMongoConn();
MongoCollection<Document> comment = mongoDatabase.getCollection("comment");
FindIterable<Document> documents = comment.find();
for (Document document : documents) {
System.out.println(document);
}
}
/*
* 插入一个文档
* */
@Test
public void insertOneDocument(){
mongoDatabase = MongoUtils.getMongoConn();
MongoCollection<Document> comment = mongoDatabase.getCollection("comment");
Document document = new Document("_id", "7").append("articleid","100001")
.append("content","吃饭前,先喝杯水或一碗汤,可减少饭量,对控制体重有帮助")
.append("userid","1007").append("nickname","玛丽莲•梦露").append("age","18")
.append("phone"," 13937165554").append("createdatetime",new Date())
.append("likenum","8888").append("state","null");
comment.insertOne(document);
}
/*
* 更新文档
* */
@Test
public void updateDocument(){
mongoDatabase = MongoUtils.getMongoConn();
MongoCollection<Document> comment = mongoDatabase.getCollection("comment");
Document document = new Document("content","饭后半小时最好不要喝大量的水,以免冲淡胃液,稀释胃酸,损害消化功能");
comment.updateOne(Filters.eq("content","吃饭前,先喝杯水或一碗汤,可减少饭量,对控制体重有明显的帮助"),new Document("$set",document));
}
/*
* 删除文档
* */
@Test
public void deleteDocument(){
mongoDatabase = MongoUtils.getMongoConn();
MongoCollection<Document> comment = mongoDatabase.getCollection("comment");
comment.deleteOne(Filters.eq("_id","7"));
}
5、运行Junit测试类
6、查看articledb数据库 是否创建集合comment和creatorblue,comment集合中是否插入文档成功