MongoDB快速入门+springBoot整合MongoDB

简介

MongoDB是一个基于分布式文件存储 [1]  的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引


基本命令 

show dbs/show databases  // 显示所有的数据库

use <数据库名>  //进入指定数据库

db //查询当前所在数据库

show collections  //查询所有的集合

ObjectId() //获取随机的id,具有唯一性

查询 

db.<collection>.find(); //查询集合 返回数组

db.<collection>.find()[1]; //查询第二个doc

db.<collection>.find({name:"xiaoming"})  // 查询name为xiaoming的doc

db.<collection>.findOne()  //查询符合条件的第一个doc

db.<collection>.find().count()  //统计数量 

db.<collection>.find().count  //查询count的funcation

db.<collection>.find().length() // 返回长度

增加

db.<collection>.insertOne()  // 插入一条doc
db.<collection>.insertMany()  //插入多条doc
db.<collection>.insert({username:"11"}) // 插入一条或多条数据

修改

db.<collection>.update(
{username:"11"},
{$set:{address:"cd",username:"xiaohong"}}
)  //修改更新 需要使用$set操作符 更新指定字段  

db.<collection>.update(
{username:"xiaohong"},
{$unset:{username:"1"}}
)  //删除某一字段需要使用$unset

//注意:update默认只会修改一个 需要加一个 {multi:true} 就会修改多个
db.<collection>.updateMany() //修改多个
db.<collection>.updateOne()  //修改一个

删除

db.<collection>.remove(<doc>) // 删除doc  如果匹配到多个时默认全部删除 ,只删除一个,需要第二个参数写true

db.<collection>.deleteOne()

db.<collection>.deleteMany() 

db.<collection>.remove({}) //清空集合

db.<collection>.drop()  //删除集合

 可视化工具的使用:

官网点击:robo3t

 


springBoot 整合mongoDB

项目结构

pom.xml

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

application.yml

server:
  port: 80
  servlet:
    context-path: /
spring:
  data:
    mongodb:
      username: root
      password: '123456'
      database: demo
      host: 127.0.0.1
      port: 27017

MongoApplication:

package com.yellow;

import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import com.yellow.bean.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.regex.Pattern;

@SpringBootApplication
@RestController
public class MongoApplication {

    @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 查询 User
     *
     * @return
     */
    @GetMapping
    public List<User> findAll() {
        return mongoTemplate.findAll(User.class);
    }

    /**
     * 添加User
     *
     * @param user
     * @return
     */
    @PostMapping
    public String addUser(@RequestBody User user) {
        try {
            mongoTemplate.save(user);
        } catch (Exception e) {
            e.printStackTrace();
            return "failed";
        }
        return "success";
    }

    /**
     * 名称精确查询
     *
     * @param username
     * @return
     */
    @GetMapping("/username/{username}")
    public List<User> findByUsername(@PathVariable("username") String username) {
        Query query = new Query(Criteria.where("username").is(username));
        List<User> users = mongoTemplate.find(query, User.class);
        return users;
    }

    /**
     * 更新User
     *
     * @param user
     * @return
     */
    @PutMapping
    public long updateUser(@RequestBody User user) {
        Query query = new Query(Criteria.where("uid").is(user.getUid()));
        Update update = new Update();
        update.set("username", user.getUsername());
        update.set("address", user.getAddress());
        //更新查询到的所有
        UpdateResult updateResult = mongoTemplate.updateMulti(query, update, User.class);
        //获取匹配数
        long matchedCount = updateResult.getMatchedCount();
        return matchedCount;
    }

    /**
     * 根据 uid 删除User
     *
     * @param uid
     * @return
     */
    @DeleteMapping("/delete/{uid}")
    public long deleteById(@PathVariable("uid") String uid) {
        DeleteResult result = mongoTemplate.remove(Query.query(Criteria.where("uid").is(uid)), User.class);
        return result.getDeletedCount();
    }

    /**
     * uid 查询  User
     *
     * @param uid
     * @return
     */
    @GetMapping("/uid/{uid}")
    public User findById(@PathVariable("uid") String uid) {
        User user = mongoTemplate.findById(uid, User.class);
        return user;
    }

    /**
     * 名称模糊查询
     *
     * @param username
     * @return
     */
    @GetMapping("/like/{username}")
    public List<User> findNameLike(@PathVariable("username") String username) {
        Pattern pattern = Pattern.compile("^.*" + username + ".*$");
        Query query = new Query();
        query.addCriteria(Criteria.where("username").regex(pattern));
        List<User> users = mongoTemplate.find(query, User.class);
        return users;
    }

    public static void main(String[] args) {
        SpringApplication.run(MongoApplication.class, args);
    }

}

Bean:

package com.yellow.bean;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "user") //指定集合
public class User {

    @Id //指定唯一标识
    private String uid;

    private String username;

    private String address;

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值