基本命令
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");
}
}