MongoDB的基本使用

springboot项目  第一步加依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
    </parent>

    <groupId>cn.itcast.mongodb</groupId>
    <artifactId>itcast-mongodb</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
<!--<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>3.9.1</version>
</dependency>-->

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> <version>1.18.4</version> </dependency> </dependencies> <build> <plugins> <!-- java编译插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.2</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> </project>

第二步 配置   编写application.properties配置文件

 

# Spring boot application
spring.application.name = itcast-mongodb

#无认证信息的配置
#spring.data.mongodb.uri=mongodb://192.168.31.81:27017/tanhua

#springboot 配置
spring.data.mongodb.username=tanhua
spring.data.mongodb.password=l3SCjl0HvmSkTtiSbN0Swv40spYnHhDV
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.database=tanhua
spring.data.mongodb.port=27018
spring.data.mongodb.host=192.168.31.81

 

 第三步    实体示例

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Document(collection = "abcUser")  // 这个注解是指定当前实体对应的表名称
public class User implements Serializable {
    // 实体中的属性名称是 id  自动对应 _id
    // 如果没有id属性 默认也会有一个 _id 值是十六进制字符串
    private ObjectId id;
    //@Id // 把这个字段值作为 _id的值
    //private String userid;
    private String username;
    // @Indexed // 会对这个属性创建索引
    private Integer age;
    private String password;
    private Date birthday;

}


@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {

private ObjectId id;
private String name;
private int age;
private Address address;
}

 
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Address {
private String street;
private String city;
private String zip;
}

 

第四步:dao

@Component
public class PersonDao {

    @Autowired
    private MongoTemplate mongoTemplate;
     //增
    public void savePerson(Person person) {
        this.mongoTemplate.save(person);
    }
    //根据名字查
    public List<Person> queryPersonListByName(String name) {
        Query query = Query.query(Criteria.where("name").is(name));
        return this.mongoTemplate.find(query, Person.class);
    }
    //分页查询
    public List<Person> queryPersonPageList(Integer page, Integer rows) {
        Query query = new Query().limit(rows).skip((page - 1) * rows);
        return this.mongoTemplate.find(query, Person.class);
    }
    //修改
    public UpdateResult update(Person person) {
        Query query = Query.query(Criteria.where("id").is(person.getId()));
        Update update = Update.update("age", person.getAge());
        return this.mongoTemplate.updateFirst(query, update, Person.class);
    }
    删除
    public DeleteResult deleteById(String id) {
        Criteria.where("id").is(12).and("dsf").is(12)
                .orOperator(Criteria.where("").is(23));
        Query query = Query.query(Criteria.where("id").is(id));
        return this.mongoTemplate.remove(query, Person.class);
    }
}

 

第五步:测试

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MongoApplication.class)
public class TestPersonDao {

    @Autowired
    private PersonDao personDao;
     //增
    @Test
    public void testSave() {
        Person person = new Person(ObjectId.get(), "张三", 20,
                new Address("人民路", "上海市", "666666"));
        this.personDao.savePerson(person);
    }
    //根据名字查
    @Test
    public void testQuery() {
        List<Person> personList = this.personDao.queryPersonListByName("张三");
        for (Person person : personList) {
            System.out.println(person);
        }
    }
    //分页查
    @Test
    public void testQuery2() {
        List<Person> personList = this.personDao.queryPersonPageList(2, 2);
        for (Person person : personList) {
            System.out.println(person);
        }
    }
    //修改  
    @Test
    public void testUpdate() {
        Person person = new Person();
        person.setId(new ObjectId("5c0956ce235e192520086736"));
        person.setAge(30);
        this.personDao.update(person);
    }
   //删除
    @Test
    public void testDelete() {
        this.personDao.deleteById("5c09ca05235e192d8887a389");
    }

}

 

User测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestSpringUser {
    //注入mongodb
    @Autowired
    private MongoTemplate mongoTemplate;

    @Test
    public void test01() {
        // ObjectId("5fec33c5c61d9528b062b790")
        // ObjectId 是MongoDB中主键类型 长度是24位的16进制数  0-9 a-f
        // 所以不是任何的字符串都可以转成ObjectID

        // 添加一个 指定id
        //User user = User.builder().id(1).username("aaa").password("123").birthday(new Date()).age(21).build();
        //User user = User.builder().id("10").username("aaa").password("123").birthday(new Date()).age(21).build();

       /* User user = User.builder().username("aaa").password("123").birthday(new Date()).age(21).build();

        // tanhua.user.insert({})
        // 如果不指定表名 默认是 实体类的类名
        User insert = mongoTemplate.insert(user,"adminuser");
        //User insert = mongoTemplate.insert(user);
        System.out.println("insert = " + insert);*/


        // 添加一个 不指定id 报异常
        // 可以将id属性去除再添加自动生成id 或者将id设置为字符串
        // 新插入数据将自动带回id
        /*User user = User.builder().username("aaa").password("123").birthday(new Date()).age(21).build();
        User insert = mongoTemplate.insert(user);
        System.out.println("insert = " + insert);*/

        // 添加多个
        User user2 = User.builder().username("aaa").password("123").birthday(new Date()).age(20).build();
        User user3 = User.builder().username("abd").password("123").birthday(new Date()).age(21).build();
        User user4 = User.builder().username("ddd").password("123").birthday(new Date()).age(22).build();
        User user5 = User.builder().username("daa").password("123").birthday(new Date()).age(23).build();
        User user6 = User.builder().username("ada").password("123").birthday(new Date()).age(24).build();
        ArrayList<User> users = new ArrayList<>();
        users.add(user2);
        users.add(user3);
        users.add(user4);
        users.add(user5);
        users.add(user6);
        Collection<User> users1 = mongoTemplate.insertAll(users);
        for (User user : users1) {
            System.out.println("user = " + user);
        }

        /*Collection<User> usesr = mongoTemplate.insert(users);
        for (User user : usesr) {
            System.out.println("user = " + user);
        }*/
    }

    @Test
    public void test02() {
        // 删除
        //User user2 = User.builder().username("aaa").password("123").birthday(new Date()).age(21).build();
        //User user2 = User.builder().id("5fec3544c61d951450500895").username("aaa").password("123").birthday(new Date()).age(21).build();
        //User user2 = User.builder().id("5fec3544c61d951450500894").build();
        /*User user2 = User.builder().id(new ObjectId("60dacdc058b1c93bb0409040")).username("ddd").build();
        // 该对象必须要有id才可以删除
        DeleteResult remove = mongoTemplate.remove(user2);
        System.out.println("remove = " + remove);*/


        // 根据条件删除
        // 名字是aaa的 如果有多条匹配的都会被删除
        /*Query query = Query.query(Criteria.where("username").is("aaa"));
        mongoTemplate.remove(query,"user");*/

        //  名称中包含d 且 年龄>20 或者 年龄=21
        //  regex("d")      %d%
        //  regex("^d")     d%
        //  regex("d$")     %d
        //  regex("^d$")    ==d   ddd 是不对的
        /*Criteria cr = new Criteria();
        cr.orOperator(Criteria.where("username").regex("^d$").and("age").gt(20), Criteria.where("age").is(21));

        List<User> user = mongoTemplate.find(Query.query(cr), User.class, "abcUser");
        for (User user1 : user) {
            System.out.println("user1 = " + user1);
        }*/

        /*Criteria cr = new Criteria();
        cr.orOperator(Criteria.where("username").regex("d").and("age").gt(20), Criteria.where("age").is(21));
        mongoTemplate.remove(Query.query(cr), "user");*/
    }

    @Test
    public void test03() {
        // 更新 只修改我们更新的字段 不会覆盖其他字段
        mongoTemplate.updateFirst(Query.query(Criteria.where("age").is(20)),
                Update.update("password", "456"),
                "abcUser");

        /*Update update = new Update();
        update.set("password","aaaa");
        update.set("username","xxoo");
        update.set("address","xxoo123");
        update.set("birthday",new Date());
        mongoTemplate.updateFirst(Query.query(Criteria.where("age").is(20)),
                update,
                "user");*/


        /*Query query = new Query();
        Criteria ccc = new Criteria();
        ccc.and("username").is("aaa");
        query.addCriteria(ccc);
        Update updat = new Update();
        updat.set("password","456");
        mongoTemplate.updateFirst(query,updat,User.class);*/

    }

    @Test
    public void test04() {
        // 查询
        // 查询所有
        /*List<User> all = mongoTemplate.findAll(User.class);
        for (User user : all) {
            System.out.println("user = " + user);
        }*/
        // 根据条件查询
        /*List<User> age = mongoTemplate.find(Query.query(Criteria.where("age").is(20)), User.class);
        for (User user : age) {
            System.out.println("user = " + user);
        }*/
        /*List<Map> age = mongoTemplate.find(Query.query(Criteria.where("age").is(20)), Map.class,"user");
        for (Map map : age) {
            System.out.println("map = " + map);
        }*/

        // 多条件查询
        /*List<User> users = mongoTemplate.find(Query.query(Criteria.where("username").is("aaa")
                .and("password").is("123")
                .and("age").gte(18)
        ), User.class);
        for (User user : users) {
            System.out.println("user = " + user);
        }*/


        // username = aaa  or  age  >= 22
        /*List<User> users = mongoTemplate.find(Query.query(Criteria.where("username").is("aaa")
                .orOperator(Criteria.where("age").gte(22))
        ), User.class);*/

        /*Criteria criteria = new Criteria();
        criteria.and("username").is("aaa");

        Criteria criteria2 = new Criteria();
        criteria2.and("age").gte(22);

        Criteria ccc = new Criteria();
        ccc.orOperator(criteria,criteria2);

        List<User> users = mongoTemplate.find(Query.query(ccc), User.class);
        for (User user : users) {
            System.out.println("user = " + user);
        }*/


        // 模糊查询
        //  名称中包含d 且 年龄>20 或者 年龄=21
        //  regex("d")      %d%
        //  regex("^d")     d%
        //  regex("d$")     %d
        //  regex("^d$")    ==d   ddd 是不对的
        /*List<User> users = mongoTemplate.find(Query.query(Criteria.where("username").regex("^d$")), User.class);
        for (User user : users) {
            System.out.println("user = " + user);
        }*/

        // 分页查询
        /*int rows = 2; // 每次查询的记录条数
        int page = 2; // 每次查询的页码
        Query query = new Query().limit(rows).skip((page - 1) * rows);
        List<User> users = mongoTemplate.find(query, User.class);
        for (User user : users) {
            System.out.println("user = " + user);
        }*/

        /*Query query = new Query();
        query.with(PageRequest.of(0,10))
                .with(new Sort(Sort.Direction.DESC,"age"));
        List<User> users = mongoTemplate.find(query, User.class);
        for (User user : users) {
            System.out.println("user = " + user);
        }*/


        // 排序查询  query.with().limit().skip()
        /*Query query = new Query();
        query.with(new Sort(Sort.Direction.DESC,"age"));
        List<User> users = mongoTemplate.find(query, User.class);
        for (User user : users) {
            System.out.println("user = " + user);
        }*/


        // 统计全部
        /*long user = mongoTemplate.count(new Query(), "user");
        System.out.println("user = " + user);*/

        // 条件统计
        long count = mongoTemplate.count(Query.query(Criteria.where("username").is("aaa")), User.class);
        System.out.println("count = " + count);
    }

}

 

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestSpringUser49 {

    @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 添加数据到Mongodb中
     */
    @Test
    public void test01() {
        // 如果不指定表名 默认是类名
//        mongoTemplate.insert(User.builder().id(1).username("zhs").password("123").birthday(new Date()).build());
//        mongoTemplate.insert(User.builder().id(1).username("zhs").password("123").birthday(new Date()).build(),"abcUser");
//        User lsi = mongoTemplate.insert(User.builder().username("zhliu").password("123456").birthday(new Date()).build());
//        System.out.println("lsi = " + lsi);

        /*User user = User.builder().userid("10010").username("ww4").password("123").birthday(new Date()).build();
        //mongoTemplate.insert(user,"aaa");
        // 如果没有手动指定表名 默认是 对象的 类名
        mongoTemplate.insert(user);*/


        /*ArrayList userList = new ArrayList();
        userList.add(User.builder().username("zhliu").password("123456").birthday(new Date()).build());
        userList.add(User.builder().username("zhliu").password("123456").birthday(new Date()).build());
        userList.add(User.builder().username("zhliu").password("123456").birthday(new Date()).build());
        userList.add(User.builder().username("zhliu").password("123456").birthday(new Date()).build());
        userList.add(User.builder().username("zhliu").password("123456").birthday(new Date()).build());
        // 批量插入
        mongoTemplate.insertAll(userList);*/
    }

    /**
     * 修改MongoDB中的数据
     */
    @Test
    public void test02() {

        // 分步骤去写
//        Query query = new Query();
//        Criteria cc = new Criteria();
//        cc.and("username").is("zhs");
//        cc.and("age").gt(20);
//        // address中包含hangzhou的
//        cc.and("address").regex("hangzhou");
//        query.addCriteria(cc);
//
//        Update update = new Update();
//        update.set("passwrod", "123");
//        mongoTemplate.updateFirst(query, update, User.class);


        // 必须要掌握的写法
        mongoTemplate.updateFirst(Query.query(Criteria.where("username").is("zhs")
                        .and("age").gt(20)
                        .and("age").gt(20)
                        .and("age").gt(20)
                        .and("age").gt(20)
                ),
                Update.update("password", "123")
                        .set("", "")
                        .set("", "")
                , User.class);



        /*UpdateResult result = mongoTemplate.updateMulti(Query.query(Criteria.where("username").is("zhliu")),
                Update.update("password", "456"), User.class);*/

        /*UpdateResult result = mongoTemplate.updateMulti(Query.query(Criteria.where("age").gte(22)),
                Update.update("password", "123").set("age",19)
                , User.class);
        System.out.println("result = " + result);*/
    }

    /**
     * 删除MongoDB中的数据
     */
    @Test
    public void test03() {
        // 根据对象删除 这个对象必须要有id属性 其他属性可以写也可以不写 写了也没有用
        //mongoTemplate.remove(User.builder().id(new ObjectId("612b334163190e29d4a541aa")).username("zhs").build());

        // 根据条件删除
        mongoTemplate.remove(Query.query(Criteria.where("password").is("1234")), User.class);
    }

    @Test
    public void test04() {
        // 查询
        // 根据id查询
//        User user = mongoTemplate.findById("612b34f963190e1d704d77c4", User.class);
//        System.out.println("user = " + user);


//        Map user = mongoTemplate.findById("612b34f963190e1d704d77c4", Map.class, "aaa");
//        System.out.println("user = " + user);

//        User user = mongoTemplate.findById("612b34f963190e1d704d77c4", User.class, "aaa");
//        System.out.println("user = " + user);

        // 查询所有
//        List<User> all = mongoTemplate.findAll(User.class);
//        for (User user : all) {
//            System.out.println("user = " + user);
//        }

        // 根据条件查询
        // 查询年龄>22
//        List<User> age = mongoTemplate.find(Query.query(Criteria.where("password").is("123")), User.class);
//        for (User user : age) {
//            System.out.println("user = " + user);
//        }


        // 查询名字中包含 d 的
        // %w%
        /*List<User> users = mongoTemplate.find(Query.query(Criteria.where("username").regex("w")), User.class);
        for (User user : users) {
            System.out.println("user = " + user);
        }*/
        // 查询名字 以w 开头的  w%
        /*List<User> username = mongoTemplate.find(Query.query(Criteria.where("username").regex("^w")), User.class);
        for (User user : username) {
            System.out.println("user = " + user);
        }*/

        // 查询名字 以w结尾的 %w
        /*List<User> username = mongoTemplate.find(Query.query(Criteria.where("username").regex("w$")), User.class);
        for (User user : username) {
            System.out.println("user = " + user);
        }*/

        // ^w$ == w
        /*List<User> username = mongoTemplate.find(Query.query(Criteria.where("username").regex("^w$")), User.class);
        for (User user : username) {
            System.out.println("user = " + user);
        }*/

        // 多条件查询  // 模糊查询
        // 年龄 > 22 并且 名称包含w的
        /*List<User> username = mongoTemplate.find(Query.query(Criteria.where("username").regex("w")
                        .and("age").gt(22)),
                User.class);
        for (User user : username) {
            System.out.println("user = " + user);
        }*/


        // password = 456 或者 名称包含w的
        // 错误的写法
        /*List<User> users = mongoTemplate.find(Query.query(Criteria.where("password").is("456")
                .orOperator(Criteria.where("username").regex("w"))), User.class);
        for (User user : users) {
            System.out.println("user = " + user);
        }*/

        /* // 创建一个条件  年龄 = 20
        Criteria criteria1 = new Criteria();
        criteria1.and("age").is(20);

        // 创建一个条件  名称包含d的
        Criteria criteria2 = new Criteria();
        criteria2.and("username").regex("d");

        // 创建了一个条件
        Criteria criteria = new Criteria();
        criteria.orOperator(criteria1,criteria2);*/

        // 总的条件 里面可以包含多个子的条件
        /*Criteria criteria = new Criteria();
        criteria.orOperator(Criteria.where("age").is(20),Criteria.where("username").regex("d"));
        List<User> users = mongoTemplate.find(Query.query(criteria), User.class);
        for (User user : users) {
            System.out.println("user = " + user);
        }*/

        // 分页查询
        /*Query query = new Query();
        // PageRequest 页码从0开始
        query.with(PageRequest.of(1, 2));
        List<User> users = mongoTemplate.find(query, User.class);
        for (User user : users) {
            System.out.println("user = " + user);
        }*/


        // 排序查询  query.with().limit().skip()
        /*Query query = new Query();
        query.with(Sort.by(Sort.Direction.DESC,"password"));
        List<User> users = mongoTemplate.find(query, User.class);
        for (User user : users) {
            System.out.println("user = " + user);
        }*/

        // 统计全部
//        long count = mongoTemplate.count(new Query(), User.class);
//        System.out.println("count = " + count);

        // 条件统计  名字中包含a
//        long count = mongoTemplate.count(Query.query(Criteria.where("username").regex("w")), User.class);
//        System.out.println("count = " + count);
        
    }

}

 

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestSpringUser51 {

    /*
        在MongoDB中不用先创建表/集合 可以直接往一个表中添加数据 MongoDB会自动创建这个表
     */
    @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 添加数据到Mongodb中
     */
    @Test
    public void test01() {
        // 不指定表名 默认是实体类名称
        // 如果我们的实体类名和集合名称不一致怎么办
        /*mongoTemplate.insert(User.builder()
                .username("zhs").password("123").age(23).birthday(new Date())
                .build());*/
        // 指定表名
        /*User user = mongoTemplate.insert(User.builder()
                .username("zhs").password("123").age(23).birthday(new Date())
                .build(), "abcdUser");
        System.out.println("user = " + user);*/

        // ID的类型
        // 如果我们的id类型是 int 我们要自己去维护这个id的值 MongoDB不能自动生成
        // 如果我们的id类型是 String 或者 ObjectID MongoDB会自动生成
        // 我们在返回值中可以拿到MongoDB中默认生成的那个ID值
        /*User user = mongoTemplate.insert(User.builder()
                .username("zhs12345").password("123").age(23).birthday(new Date())
                .build());
        System.out.println("user = " + user);*/


        ArrayList<User> userList = new ArrayList<>();
        userList.add(User.builder().username("zhs").password("123").age(23).birthday(new Date()).build());
        userList.add(User.builder().username("lis").password("123").age(24).birthday(new Date()).build());
        userList.add(User.builder().username("ww").password("123").age(45).birthday(new Date()).build());
        userList.add(User.builder().username("zhliu").password("123").age(56).birthday(new Date()).build());
        mongoTemplate.insertAll(userList);

    }

    /**
     * 修改MongoDB中的数据
     */
    @Test
    public void test02() {
        // 分步骤去写
        /*// username = zhangsan12345 age = 100
        Query query = new Query();
        Criteria criteria = new Criteria();
        criteria.and("username").is("zhs12345");
        query.addCriteria(criteria);

        Update update = new Update();
        update.set("age", 100);

        mongoTemplate.updateFirst(query,update,User.class);*/

        // 常用写法(掌握)
        //mongoTemplate.updateFirst(Query.query(Criteria.where("username").is("zhs12345")), Update.update("age","200"), User.class);
        /*mongoTemplate.updateFirst(Query.query(Criteria.where("username").is("zhs12345").and("age").gt(45)),
                Update.update("age","200")
                .set("password", "789")
                , User.class);*/

        // 修改单条

        // 修改多条
        // age > 30 password = 456
        mongoTemplate.updateMulti(Query.query(Criteria.where("age").gt(30)), Update.update("password","456"), User.class);

    }

    /**
     * 删除MongoDB中的数据
     */
    @Test
    public void test03() {
        // 根据ID进行删除  传一个Bean  要求必须有ID属性 其他属性写不写都没有用
        //mongoTemplate.remove(User.builder().id(new ObjectId("6162a9203f3bce10e00d1916")).username("zhs111").password("123567").age(23).build());

        // 根据条件删除
        mongoTemplate.remove(Query.query(Criteria.where("password").is("456")), User.class);
    }

    /**
     * 查询MongoDB中的数据
     */
    @Test
    public void test04() {
        // 查询
        // 根据id查询   User.class 的作用是啥 : 代表要查询的是那个表  结果集的封装
//        User byId = mongoTemplate.findById(new ObjectId("6162ac693f3bce21a4ccb1b7"), User.class);
//        System.out.println("byId = " + byId);

//        Map abcUser = mongoTemplate.findById(new ObjectId("6162ac693f3bce21a4ccb1b7"), Map.class, "abcUser");
//        System.out.println("abcUser = " + abcUser);


        // 查询所有
        /*List<User> all = mongoTemplate.findAll(User.class);
        for (User user : all) {
            System.out.println("user = " + user);
        }*/


        // 条件查询
        // 查询年龄>22
        /*List<User> age = mongoTemplate.find(Query.query(Criteria.where("age").gt(22)), User.class);
        for (User user : age) {
            System.out.println("user = " + user);
        }*/


        // 模糊查询
        // 查询名字中包含 i 的
        /*List<User> age = mongoTemplate.find(Query.query(Criteria.where("username").regex("i")), User.class);
        for (User user : age) {
            System.out.println("user = " + user);
        }*/

        // 查询名字 以w 开头的  w%
        /*List<User> age = mongoTemplate.find(Query.query(Criteria.where("username").regex("^w")), User.class);
        for (User user : age) {
            System.out.println("user = " + user);
        }*/

        // 查询名字 以w结尾的 %w
        /*List<User> age = mongoTemplate.find(Query.query(Criteria.where("username").regex("w$")), User.class);
        for (User user : age) {
            System.out.println("user = " + user);
        }*/
        /* ^w$ == w */
        /*List<User> age = mongoTemplate.find(Query.query(Criteria.where("username").regex("^w$")), User.class);
        for (User user : age) {
            System.out.println("user = " + user);
        }*/


        // 年龄 > 30 并且 名称包含w的
        /*List<User> age = mongoTemplate.find(Query.query(Criteria.where("username").regex("w").and("age").gt(30)), User.class);
        for (User user : age) {
            System.out.println("user = " + user);
        }*/

        // password = 456 或者 名称包含w的
        // 错误写法
        /*List<User> age = mongoTemplate.find(Query.query(Criteria.where("username").regex("w")
                .orOperator(Criteria.where("password").is("456"))), User.class);
        for (User user : age) {
            System.out.println("user = " + user);
        }*/

        /*Query query = new Query();
        Criteria criteria = new Criteria();

        Criteria criteria1 = new Criteria();
        criteria1.and("password").is("456");

        Criteria criteria2 = new Criteria();
        criteria2.and("username").regex("w");

        criteria.orOperator(criteria1,criteria2);


        query.addCriteria(criteria);
        List<User> age = mongoTemplate.find(query, User.class);
        for (User user : age) {
            System.out.println("user = " + user);
        }*/

        /*Criteria criteria = new Criteria();
        criteria.orOperator(Criteria.where("username").regex("w"),Criteria.where("password").is("456"));
        List<User> users = mongoTemplate.find(Query.query(criteria), User.class);
        for (User user : users) {
            System.out.println("user = " + user);
        }*/


        // 分页查询
        /*Query query = new Query();
        //query.limit(2).skip(2);
        query.with(PageRequest.of(1,2));
        List<User> users = mongoTemplate.find(query, User.class);
        for (User user : users) {
            System.out.println("user = " + user);
        }*/


        // 排序查询
        /*Query query = new Query();
        query.with(Sort.by(Sort.Direction.DESC,"age"));
        List<User> users = mongoTemplate.find(query, User.class);
        for (User user : users) {
            System.out.println("user = " + user);
        }*/


        // 统计全部
//        long count = mongoTemplate.count(new Query(), User.class);
//        System.out.println("count = " + count);

        // 条件统计  名字中包含w
//        long count = mongoTemplate.count(Query.query(Criteria.where("username").regex("w")), User.class);
//        System.out.println("count = " + count);


    }

}

 

启动类

@SpringBootApplication
public class MongoApplication {

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

 

 

 

posted @ 2021-11-14 15:37  超级大菜鸡  阅读(178)  评论(0)    收藏  举报