MongoDB记录

 安装和配置连接 win版

基本命令

1、 Help查看命令提示

        db.help();

2、 切换/创建数据库

        use test

如果数据库不存在,则创建数据库,否则切换到指定数据库

3、 查询所有数据库

        show dbs;

正常mongodb数据库 show dbs 不显示自建数据库 ,加一下代码就可以了

        db.check.insertOne({"ClientName":"bendi"});

4、 删除当前使用数据库

        db.dropDatabase();

5、 查看当前使用的数据库

        db.getName();

6、 显示当前db状态

        db.stats();

7、 当前db版本

        db.version();

8、 查看当前db的链接机器地址

        db.getMongo();

常用操作

INSERT

//user是数据库名,

> db.User.save({name:'zhangsan',age:21,sex:true})

//会查询user中所有数据

> db.User.find()

{"_id": Objectld("4f69e680c9106ee2ec95da66"), "name": "zhangsan", "age": 21,

"sex": true}

WHERE

 # select * from User where name = 'zhangsan'

> db.User.find({name:"zhangsan"})

FIELDS

# select name, age from User where age = 21

> db.User.find({age:21}, {'name':1, 'age':1}) 

 SORT

其中 1 为升序排列,而 -1 是用于降序排列

# select * from User order by age

> db.User.find().sort({age:1})

SUCE

 使用 limit()方法来读取指定数量的数据,skip()方法来跳过指定数量的数据

# select * from User skip 2 limit 3

> db.User.find().skip(0).limit(3)

 IN

# select * from User where age in (21, 26, 32)

> db.User.find({age:{$in:[21,26,32]}})

COUNT

# select count(*) from User where age >20

> db.User.find({age:{$gt:20}}).count()

OR

# select * from User where age = 21 or age = 28

> db.User.find({$or:[{age:21}, {age:28}]})

Update

# update Userset age = 100, sex = 0 where name = 'user1'

> db.User.update({name:"zhangsan"}, {$set:{age:100, sex:0}})

Remove

> db.User.remove(id)

//移除对应id的行

> db.User.remove({})

//移除所有

db.getMongo〇;

前提启动起来mongodb

查找数据源->MongoDB ,配置路径端口,安照提示下载需要资源,,建议下载 5.0版本

 application.properties配置

# mongodb的 配置
spring.data.mongodb.uri=mongodb://127.0.0.1:27017/test

自己的实体类,对应的 Mongodb 字段

package com.skx.mongotest.entity;

import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.util.Date;

/**
 * mongodb中 test库中 User表
 * @author 阿新
 */

@Data
@Accessors(chain = true)
//mongodb中的注解
@Document("User")
public class User {

    @Id//表示_id 自动生成的
    private String id;
    private String name;
    private Integer age;
    private String email;
    private Date createDate;
}

MongoTemplate 单元测试 

package com.skx.mongotest;

import com.skx.mongotest.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import java.util.Date;
import java.util.List;
import java.util.regex.Pattern;

@SpringBootTest
class MongoTestApplicationTests {

    //注入mongoTemplate
    @Autowired
    private MongoTemplate mongoTemplate;

    //添加操作
    @Test
    void create() {
        User user = new User();
        user.setName("tom")
                .setAge(20)
                .setEmail("1655507637@qq.com")
                .setCreateDate(new Date());
        User u = mongoTemplate.insert(user);
        System.out.println("u" + u);
    }

    //查询所有数据
    @Test
    public void findAll(){
        List<User> userList = mongoTemplate.findAll(User.class);
        System.out.println(userList);
    }

    //根据id查询数据
    @Test
    public void findById(){
        User byId = mongoTemplate.findById("63da55dca66eb5318cc9e7b9", User.class);
        System.out.println(byId);
    }

    //根据条件查询
    @Test
    public void findUserList(){
        //name = tom  age = 20
        Query query = new Query(
                Criteria.where("name").is("tom")
                        .and("age").is(20));
        List<User> users = mongoTemplate.find(query, User.class);
        System.out.println(users);
    }

    //模糊查询
    @Test
    public void findLikeUserList(){
        //name like tom
        String name = "to";
        //正则表达式
        String regex = String.format("%s%s%s", "^.*", name, ".*$");
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Query query = new Query(
                Criteria.where("name").regex(pattern));
        List<User> users = mongoTemplate.find(query, User.class);
        System.out.println(users);
    }

    //分页查询
    @Test
    public void findPageUser(){
        int pageNo = 1;
        int pageSize = 3;
        //条件构造
        String name = "to";
        String regex = String.format("%s%s%s", "^.*", name, ".*$");
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Query query = new Query(
                Criteria.where("name").regex(pattern));
        //分页构建
        long count = mongoTemplate.count(query, User.class);
        List<User> users = mongoTemplate.find(query.skip((pageNo - 1) * pageSize), User.class);
        System.out.println("分页数据" + users);
        System.out.println("数据数量:" + count);
    }

    //修改操作
    @Test
    public void updateUser(){
        //根据id查询数据
        User user = mongoTemplate.findById("63da55dca66eb5318cc9e7b9", User.class);
        //设置修改值
        user.setName("jerry").setAge(30).setEmail("2957@qq.com");
        //调用方法实现修改
        Query query = new Query(Criteria.where("_id").is(user.getId()));
        Update update = new Update();
        update.set("name",user.getName());
        update.set("eamil",user.getEmail());
        update.set("age",user.getAge());
        UpdateResult upsert = mongoTemplate.upsert(query, update, User.class);
        long count = upsert.getModifiedCount();
        System.out.println(count);
    }

    //删除
    @Test
    public void deleteUser(){
        Query query = new Query(Criteria.where("_id").is("63da55dca66eb5318cc9e7b9"));
        DeleteResult remove = mongoTemplate.remove(query, User.class);
        long count = remove.getDeletedCount();
        System.out.println(count);
    }
}

UserRepository 配置

package com.skx.mongotest.repository;

import com.skx.mongotest.entity.User;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

/**
 * Spring Data提供了对mongodb数据访问的支持,我们只需要继承
 * MongoRepository类,按照Spring Data规范就可以了
 * @author 阿新
 */
@Repository
public interface UserRepository extends MongoRepository<User,String> {
}

UserRepository 单元测试

package com.skx.mongotest;


import com.skx.mongotest.entity.User;
import com.skx.mongotest.repository.UserRepository;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.*;

import java.util.List;

@SpringBootTest
class MongoTest2 {

    //注入自定义的 userRepository
    @Autowired
    private UserRepository userRepository;

    //添加操作
    @Test
    void create() {
        User user = new User();
        user.setName("mary").setAge(60);
        User save = userRepository.save(user);
        System.out.println(save);
    }

    //查询所有数据
    @Test
    public void findAll(){

        List<User> list = userRepository.findAll();
        System.out.println(list);
    }

    //根据id查询数据
    @Test
    public void findById(){
        User user =
                userRepository.findById("63db63c24bd62a4db46f6cfd").get();
        System.out.println(user);
    }

    //根据条件查询
    @Test
    public void findUserList(){
        User user = new User();
        user.setName("mary").setAge(60);
        Example<User> of = Example.of(user);
        List<User> list = userRepository.findAll(of);
        System.out.println(list);
    }

    //模糊查询
    @Test
    public void findLikeUserList(){
        //设置模糊查询匹配规则
        //创建匹配器,即如何使用查询条件
        ExampleMatcher matcher = ExampleMatcher.matching().
                withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)//改变字符串匹配方式
                .withIgnoreCase(true);//忽略大小写
        User user = new User();
        user.setName("m");
        Example<User> of = Example.of(user,matcher);
        List<User> list = userRepository.findAll(of);
        System.out.println(list);
    }

    //分页查询
    @Test
    public void findPageUser(){
        //设置分页参数  0 代表第一页
        PageRequest pageable = PageRequest.of(0, 3);
        User user = new User();
        user.setName("mary");
        Example<User> of = Example.of(user);
        Page<User> page = userRepository.findAll(of,pageable);
        System.out.println(page);
    }

    //修改操作
    @Test
    public void updateUser(){
        User user = userRepository.findById("63db63c24bd62a4db46f6cfd").get();
        user.setName("jack").setEmail("16555@qq.com");
        User save = userRepository.save(user);
        System.out.println(save);
    }

    //删除
    @Test
    public void deleteUser(){
        userRepository.deleteById("63db63c24bd62a4db46f6cfd");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值