0. 下载并解压
我这里下载的是zip版本的
1. 安装运行
新建文件夹data/db
进入cmd
, 切换到mongodb/bin
目录下, 执行命令
mongod --dbpath c:\Server\mongodb\data\db
看到waiting for connections on port 27017
即代表已经运行起来了
2. 命令行连接
bin目录下进入cmd
, 输入mongo
并回车运行
查看数据库: show dbs
添加用户
use admin
db.createUser(
{
user: "myroot",
pwd: "root1234",
roles: [ { role: "root", db: "admin" } ]
}
)
use test
这里使用了
use test
, 它会切换到test
数据库, 如果不存在则会自动创建
关于
MongoDB
的role
, 可以查看这篇文章: MongoDB 内置角色
关闭服务, 并启用身份验证重启
- 关闭
mongod
与mongo
命令的两个控制台窗口, 重新打开一个控制台, 切换到mongo/bin
目录下, 运行以下命令
mongod --dbpath c:\Server\mongodb\data\db --auth
- 另起一个控制台, 输入
mongo
命令
此时可以看到, 因为启用了身份验证, 运行show dbs
就报错了
db.auth(用户名, 密码)
认证用户
此时再运行show dbs
能正常使用了
- 创建普通用户
db.createUser(
{
user: "testUser",
pwd: "1234",
roles: [ { role: "readWrite", db: "test" } ]
}
)
- 退出当前用户, 用新创建的
testUser
登录
db.logout()
db.auth("testUser", "1234")
use test
- 集合的创建与删除(
集合
相当于一般数据库中表
的概念)
db.createCollection(name, options)
db.collection.drop()
- 文档(数据)的增删查改
db.COLLECTION_NAME.insert(document)
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
db.collection.find(query, projection)
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
3. 在SpringBoot
中使用
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
配置数据库连接
spring.data.mongodb.uri=mongodb://test:1234@localhost:27017/test?maxPoolSize=256
创建Bean
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
/**
* Created by Reeye on 2018/10/31 15:46
* Nothing is true but improving yourself.
*/
@Data
@Document(collection = "user")
public class User {
@Id
private Long id;
@Field("name")
private String name;
private Integer age;
private Boolean sex;
}
创建Repository
import org.springframework.data.mongodb.repository.MongoRepository;
/**
* Created by Reeye on 2018/10/31 15:48
* Nothing is true but improving yourself.
*/
public interface UserRepository extends MongoRepository<User, Long> {
User findByName(String name);
}
测试运行
@Autowired
private UserRepository userRepository;
@Test
public void test1() {
User u = new User();
u.setId(3L);
u.setName("Tom");
userRepository.save(u);
userRepository.findAll();
userRepository.deleteById(3L);
}
MongoRepository
封装了一些常用的CRUD方法, 并且跟JPA
类似, 可以在接口里自定义findByXxx
,queryByXxxxLike
这样的方法, 不需要实现.