JAVA Boy 快速上手MongoDB教程(1)
前置知识
MongoDB 是什么?
MongoDB(来自"humongous",意为庞大的)是一种开源的、跨平台的文档导向数据库管理系统(DBMS)。它属于NoSQL(非关系型数据库)类别,与传统的关系型数据库(如MySQL、PostgreSQL)相比,MongoDB采用了不同的数据存储和查询方式。
MongoDB以其灵活的数据模型而闻名,它使用类似JSON的BSON(二进制JSON)格式来存储数据。这意味着你可以存储不同结构和类型的数据记录,而不需要预先定义表结构。这在应对不断变化的数据需求和快速迭代的开发过程中非常有用。
它跟传统关系型数据库有什么相似的地方
MongoDB 的存储结构区别于传统的关系型数据库,主要由如下三个单元组成:
- 文档(Document) :MongoDB 中最基本的单元,由 BSON 键值对(key-value)组成,类似于关系型数据库中的行(Row)。
- 集合(Collection) :一个集合可以包含多个文档,类似于关系型数据库中的表(Table)。
- 数据库(Database) :一个数据库中可以包含多个集合,可以在 MongoDB 中创建多个数据库,类似于关系型数据库中的数据库(Database)。
也就是说,MongoDB 将数据记录存储为文档(更具体来说是BSON 文档),这些文档在集合中聚集在一起,数据库中存储一个或多个文档集合。
SQL 与 MongoDB 常见术语对比 :
SQL | MongoDB |
---|---|
表(Table) | 集合(Collection) |
行(Row) | 文档(Document) |
列(Col) | 字段(Field) |
主键(Primary Key) | 对象 ID(Objectid) |
索引(Index) | 索引(Index) |
嵌套表(Embeded Table) | 嵌入式文档(Embeded Document) |
数组(Array) | 数组(Array) |
安装
建议直接安装windows版本,傻瓜式安装,带图形化界面,学习时比较方便
在Java中使用
配置
- 添加pom依赖
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>bson</artifactId>
<version>3.12.11</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.12.11</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-core</artifactId>
<version>3.12.11</version>
</dependency>
- 连接MongoDB配置
/**
*
* @param databaseName 数据库名
* @return 操作数据库实例
*/
public MongoDatabase getMongoDatabase(String databaseName){
// 创建 MongoDB 连接
MongoClient mongo = new MongoClient("localhost", 27017);
// 连接到 MongoDB
// zs 要连接到数据库的用户名
// databaseName 要连接的数据库名称
// password 与用户名相关联的密码,以字符数组的形式传递
MongoCredential.createCredential("zs", databaseName, "password".toCharArray());
// 返回访问的数据库实例
return mongo.getDatabase(databaseName);
}
- 验证是否成功连接
@Test
public void test(){
MongoDatabase database = getMongoDatabase("study");
System.out.println("databaseName: " + database.getName()); //databaseName: study
}
操作集合(表)
创建集合
@Test
public void createCollection(){
MongoDatabase database = getMongoDatabase("study");
// 创建集合 可以把它理解为创建一张表
database.createCollection("zs_test_1");
}
查询单个集合
@Test
public void selectCollection(){
//查询单个集合
MongoDatabase database = getMongoDatabase("study");
//获取指定集合实例对象
MongoCollection<Document> collection = database.getCollection("zs_test_1");
System.out.println(collection.getNamespace());
}
查询所有集合
@Test
public void selectAllCollection(){
//查询所有集合
MongoDatabase database = getMongoDatabase("study");
// 检索所有集合名字列表
for (String name : database.listCollectionNames()) {
System.out.println(name);
}
// 检索所有集合列表
for (Document document : database.listCollections()) {
System.out.println(document);
}
}
删除集合
@Test
public void deleteCollection(){
MongoDatabase database = getMongoDatabase("study");
// 检索集合
MongoCollection<Document> collection = database.getCollection("zs_test_1