Mongo学习笔记

113 阅读3分钟

概念:MongoDB是一个基于分布式文件存储的数据库

Windows实践

下载MongoDB:www.mongodb.com/try/downloa…

下载zip包,然后解压到本地工具文件夹中

安装服务:要在安装目录里创建两个目录:data、logs

然后以管理员模式,切换到安装目录下的bin目录运行以下格式命令来指定mongdb的数据及日志目录

 mongod --install --dbpath 数据目录 --logpath 日志目录\日志名称 
 ​

具体的代码为如下所示:

 mongod --install --dbpath D:\development_tools\mongo\mongodb-win32-x86_64-windows-7.0.4\data --logpath D:\development_tools\mongo\mongodb-win32-x86_64-windows-7.0.4\logs\mongodb.log

进行验证,win+r输入services.msc,可以看到mongoDB服务

然后在bin目录下启动目录:

 net start mongodb

Java项目实践Demo

普通maven项目使用

新建一个空的maven项目,然后导入mongo的依赖:

 <dependency>
       <groupId>org.mongodb</groupId>
       <artifactId>mongodb-driver-sync</artifactId>
       <version>4.4.1</version> 
 </dependency>

然后在main方法中:

 public class demo {
 ​
     public static void main(String[] args) {
         // 连接到MongoDB服务器
         try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
             // 选择数据库
             MongoDatabase database = mongoClient.getDatabase("lzh01");
 ​
             // 获取集合
             MongoCollection<Document> collection = database.getCollection("lzh01");
 ​
             // 插入文档
             Document document = new Document("name", "wxr");
             collection.insertOne(document);
 ​
             // 查询文档
             Document query = new Document("name", "wxr");
             Document result = collection.find(query).first();
             System.out.println(result);
         }
     }
 }

分析:首先根据URL创建MongoDB 客户端,然后从其中取出对应的集合,然后新建文档,将文档加入到集合里面

在Spring中的使用

spring中首先导包:

 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-mongodb</artifactId>
 </dependency>

然后在配置文件中写连接信息:

 spring:
     data:
         mongodb:
             uri: mongodb://127.0.0.1:27017/lzh01

然后在项目中写这个的配置类:

 /**
  * @ClassName: mongoConfig
  * @Description:
  * @Author: lzh
  * @Date: 2024/1/8
  */
 @Configuration
 @EnableMongoRepositories(mongoTemplateRef = "lzhmongoTemplate")
 public class mongoConfig {
 ​
     @Value("${spring.data.mongodb.uri}")
     private String uri;
 ​
     @Primary
     @Bean(name="lzhmongoTemplate")
     public MongoTemplate buildTemplate() {
         return new MongoTemplate(new SimpleMongoClientDbFactory(uri));
     }
 }

然后在项目中注入使用:

     @Resource
     @Qualifier("mongoTemplateQianlima")
     private MongoTemplate mongoTemplateQianlima;

然后使用MongoTemplate的实例进行操作即可(test进行测试):

 @SpringBootTest
 class Demo0108ApplicationTests {
 ​
     @Autowired
     @Qualifier("lzhmongoTemplate")
     private MongoTemplate lzhmongoTemplate;
 ​
     @Test
     void contextLoads() {
 ​
         //添加操作
         ArrayList<Object> list = new ArrayList<>();
         for (int i = 0; i < 20; i++) {
             list.add(new Person("小红"+i , i));
         }
         lzhmongoTemplate.insertAll(list);
 ​
         // 更新操作
         Query query = new Query(Criteria.where("name").is("小红30"));
         Update update = new Update()
                 .set("name", "小红40")
                 .set("age",25);
         lzhmongoTemplate.updateFirst(query, update, Person.class);
 ​
 ​
         //删除操作
         Query deleteQuery = new Query(Criteria.where("name").is("小红40"));
         lzhmongoTemplate.remove(deleteQuery, Person.class);
 ​
         // 查询操作
         Query findQuery = new Query(Criteria.where("age").gte(10));
         List<Person> persons = lzhmongoTemplate.find(findQuery, Person.class);
         for (Person person : persons) {
             System.out.println(person);
         }
 ​
 ​
 ​
         //游标查询
         Query query1 = new Query(Criteria.where("age").gte(10));
 ​
         MongoCollection<Document> collection = lzhmongoTemplate.getCollection("person");
         MongoCursor<Document> cursor = getMongoCursor(query1, collection);
         Document doc;
         while (cursor.hasNext()){
             doc = cursor.next();
             if(Objects.isNull(doc)){
                 continue;
             }
             String name = (String) doc.get("name");
             Integer age = (Integer)doc.get("age");
             System.out.println(name + age);
         }
 ​

 ​
 ​
     public MongoCursor<Document> getMongoCursor(Query query, MongoCollection<Document> collection) {
         if (Objects.isNull(query)) {
             return collection.
                     find()//设置游标查询不超时
                     .noCursorTimeout(true)
                     // TODO: 线上需改为10000,设置批量从数据库中获取的数据量
                     .batchSize(10000)
                     .cursor();
         } else {
             return collection.
                     find(query.getQueryObject())//设置游标查询不超时
                     .noCursorTimeout(true)
                     // TODO: 线上需改为10000,设置批量从数据库中获取的数据量
                     .batchSize(10000)
                     .cursor();
         }
     }
 ​
 ​
 }
 
          // 使用游标查询(第二种方法)
         try (CloseableIterator<Person> cursor1 = lzhmongoTemplate.stream(query, Person.class)) {
             cursor1.forEachRemaining(person -> {
                 // 处理每个查询到的 Person 对象
                 System.out.println(person);
             });
         }
 ​
     }

mongoTemplate的基本用法

MongoClient 是 MongoDB Java 驱动提供的类,用于与 MongoDB 数据库建立连接,它是根据地址和端口号创建

MongoTemplate 是 Spring Data MongoDB 提供的高级模板,它封装了 MongoClient 的底层细节,简化了 MongoDB 操作的流程。它是根据MongoClient来创建的

MongoTemplate 是 Spring Data MongoDB 提供的一个类,用于在 Spring 应用程序中与 MongoDB 进行交互。它是 MongoDB 操作的高级模板,简化了在 Java 中执行各种 MongoDB 操作的步骤。

下面是它的使用:

插入数据:

 YourEntity yourEntity = new YourEntity();
 // 设置实体的属性
 mongoTemplate.insert(yourEntity);

这个插入方法会往MongoDB 中的一个数据库中的一个集合插入数据,数据库是你在配置文件中指定的(未指定则默认),同样集合如果没有显式的指定,则是你的实体类 YourEntity 的注解或者默认命名规则

更新数据:

 Query query = new Query(Criteria.where("field").is("value"));
 Update update = new Update().set("fieldToUpdate", "updatedValue");
 mongoTemplate.updateFirst(query, update, YourEntity.class);

查询数据:

 Query query = new Query(Criteria.where("field").is("value"));
 List<YourEntity> result = mongoTemplate.find(query, YourEntity.class);

删除数据:

 Query query = new Query(Criteria.where("field").is("value"));
 mongoTemplate.remove(query, YourEntity.class);

Compass图形化连接登录

下载图形化管理工具:

下载地址:www.mongodb.com/try/downloa…

直接安装,然后直接点击CONNECT就会连接本地的数据库localhost:27017