Mongodb手记——简介

Mongodb是一款面向集合、无模式的文档类数据库,支持多种操作系统及32位和64位系统。其核心特性包括面向集合存储、无模式约束以及文档形式的数据存储。Mongodb通过主从服务实现数据备份,并支持集群和fail-over模式确保服务持续性。
Mongodb一款面向集合,无模式的文档类数据库。它里面的数据均以key-value的形式进行存储。

Mongodb的三个基本特征

面向集合:

在Mongodb中,数据被分组保存到一个个集合中,每一个集合在数据库中都有一个唯一的名字,在这个集合中可以包含无限多的文档。这样的集合就像是关系型数据库中的一个表,除了它是无模式的。


无模式:

这里的无模式是指数据库不会去关心在上面集合中的文档所存储的数据的结构。事实上,我们可以在同一个集合中存储不同数据结构的文档,只要我们自己处理的时候可以差别。


文档形式:

在Mongodb中,我们集合的存储形式是以key-value键值对的形式保存的,在这里key必须是一个string的形式,而value则可以是任意类型的数据结构,可以是数组,文档。我们把这种数据格式叫"BSON(Binary Serialized dOcument Notation)"


Mongdb的平台性

Mongodb可以支持linux ,windows, OS X等操作系统,并且同时相应的支持32位和64位的系统。但是要注意的一点是在32位的系统上数据库的数据总大小有一个2GB的限制。


Mongdb的基本操作结构

服务
Mongdb总的来说就是一个服务进程,它运行在系统上以服务的形式监听客户端接入并执行客户端发起的相应命令请求。

Mongodb的默认监听端口是27017,这个端口在启动之前可以自己配置,为了安全一般会重新配置。

客户端
通过这个端口连接到服务器,配置相应的认证安全参数,如果服务器端配置了用户认证。连接成功后,客户端可以执行一系列如:插入,查询,更新等操作。

数据存储
Mongodb把数据保存在一个文件当中(默认路径:/data/db/),另外通过内存映射的方式来进行数据管理以提高整体数据库的性能。

数据备份和集群
Mongodb支持配置自动复制,通过主从服务的方式实现数据的备份。同时还支持fail-over模式,这样通过集群+主从复制,可以实现服务的持续性。

Mongdb功能

  • 查询:可以通过其它的查询对像或是类似于SQL的条件语句where语法限制来进行文档的查询。而且查询支持排序、数量控制、返回数据总量,可以略过部分返回的文档集合,同时还可以返回文档的部分。
  • 插入和更新:支持插入新的文档,更新现有的文档。
  • 索引管理:在一个文档中可以在一个或是多个的key上面创建索引,包括子结构和删除索引等。
  • 通用命令:任何Mongodb的操作都可以通过特定的命令固定管道来进行管理。
### 实验目的 了解如何使用 Java 连接 MongoDB 数据库,进行基本的增删改查操作。 ### 实验环境 - JDK 1.8 及以上 - MongoDB 数据库 - Maven 或 Gradle 用于依赖管理 ### 实验步骤 #### 1. 添加依赖 如果使用 Maven,在 `pom.xml` 中添加以下依赖: ```xml <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>4.7.1</version> </dependency> ``` #### 2. 连接 MongoDB ```java import com.mongodb.client.MongoClients; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoDatabase; public class ConnectToMongoDB { public static void main(String[] args) { // 连接到 MongoDB 服务器 MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); // 选择数据库 MongoDatabase database = mongoClient.getDatabase("testdb"); System.out.println("Connected to the database successfully"); } } ``` #### 3. 插入文档 ```java import com.mongodb.client.MongoClients; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; public class InsertDocument { public static void main(String[] args) { MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); MongoDatabase database = mongoClient.getDatabase("testdb"); MongoCollection<Document> collection = database.getCollection("testcollection"); Document document = new Document("name", "John") .append("age", 30) .append("city", "New York"); collection.insertOne(document); System.out.println("Document inserted successfully"); } } ``` #### 4. 查询文档 ```java import com.mongodb.client.MongoClients; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import com.mongodb.client.FindIterable; public class QueryDocument { public static void main(String[] args) { MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); MongoDatabase database = mongoClient.getDatabase("testdb"); MongoCollection<Document> collection = database.getCollection("testcollection"); FindIterable<Document> documents = collection.find(); for (Document document : documents) { System.out.println(document.toJson()); } } } ``` #### 5. 更新文档 ```java import com.mongodb.client.MongoClients; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import com.mongodb.client.model.Filters; import com.mongodb.client.model.Updates; public class UpdateDocument { public static void main(String[] args) { MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); MongoDatabase database = mongoClient.getDatabase("testdb"); MongoCollection<Document> collection = database.getCollection("testcollection"); collection.updateOne(Filters.eq("name", "John"), Updates.set("age", 31)); System.out.println("Document updated successfully"); } } ``` #### 6. 删除文档 ```java import com.mongodb.client.MongoClients; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import com.mongodb.client.model.Filters; public class DeleteDocument { public static void main(String[] args) { MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); MongoDatabase database = mongoClient.getDatabase("testdb"); MongoCollection<Document> collection = database.getCollection("testcollection"); collection.deleteOne(Filters.eq("name", "John")); System.out.println("Document deleted successfully"); } } ``` ### 实验注意事项 - 确保 MongoDB 服务器已启动,并且监听的端口正确。 - 在进行数据库操作时,要处理可能出现的异常,如网络异常、数据库连接异常等。 - 对于 MongoDB 的权限管理,要合理设置用户权限,避免数据泄露。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值