MongoDB学习笔记
概念
- database 数据库
- table 数据库表/集合
- document 数据记录行/文档
- fieId 数据字段/域
- primaryKey 主键 MongoDB自动将_id字段设置位主键
命令行模式:在不启动动window服务的前提下,也可以通过建立一个命令行窗口来提供MongoDB服务。这个模式下是显示输出的内容的,即日志内容会直接打印在命令行窗口中。这种方式更利于数据库应用的开发调试,更加直观的显示数据的操作与异常。当关闭命令行窗口后,MongoDB服务将会停止。
- –dbpath:指定数据库路径
- –logpath:指定日志路径
- –fork:以守护进程的方式运行MongoDB,创建服务器进程
- –auth:启用用户身份验证(默认是不使用的)
- –cpu:定期显示CPU的CPU利用率和iowait
- –port:指定端口号
use admin
db.createUser({
user:"userAdmin",
pwd:"3832414122",
roles:[{ role: "userAdminAnyDatabase",db:"admin"}]
})
-- user:用户名
-- pwd:密码
-- roles:指定用户的角色。数组的元素必须是对象,且包含两个属性(role-权限,db-已经存在的数据库)
1.创建数据库
use server1
db.server1.insert(obj);
【注意】数据库创建,必须要插入一条数据后,show dbs
命令才会显示,数据库已经添加.
2.查看数据库
show dbs//查看所有数据库
db//查看当前数据库
【注意】这个操作并不会显示系统所有的数据库,而只显示当前登录用户被授权的数据库。
3.删除数据库
db.dropDatabase()//删除当前数据库
4.创建集合
db.createCollection(name, options)
db.createCollection("mycol", { capped : true, autoIndexId : true, size :
6142800, max : 10000 } )
123
参数说明:
- name: 要创建的集合名称
- options: 可选参数, 指定有关内存大小及索引的选项
字段 | 类型 | 描述 |
---|---|---|
capped | 布尔 | (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 当该值为 true 时,必须指定 size 参数。 |
autoIndexId | 布尔 | (可选)如为 true,自动在 _id 字段创建索引。默认为 false。 |
size | 数值 | (可选)为固定集合指定一个最大值(以字节计)。 如果 capped 为 true,也需要指定该字段。 |
max | 数值 | (可选)指定固定集合中包含文档的最大数量。 |
5.查看集合
show collections
6.删除集合
db.collection.drop()
7.插入文档
MongoDB 使用 insert() 或 save() 方法向集合中插入文档.
db.COLLECTION_NAME.insert(document)
db.COLLECTION_NAME.save(document)
db.COLLECTION_NAME.insertMany([{"b": 3}, {'c': 4}])
【注意】:
- 如果插入数据是不存在的集合,将会自动创建集合。
- insert: 若新增数据的主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常提示主键重复,不保存当前数据。
- save: 若新增数据的主键已经存在,则会对当前已经存在的数据进行修改操作。
8.查询文档
db.collection.find(query, projection)
- query :可选,使用查询操作符指定查询条件
操作 | 格式 | 范例 | RDBMS中的类似语句 |
---|---|---|---|
等于 | {: } | db.col.find({"by":"测试"}).pretty() | where by = '测试' |
小于 | {:{$lt:}} | db.col.find({"likes":{$lt:50}}).pretty() | where likes < 50 |
小于或等于 | {:{$lte:}} | db.col.find({"likes":{$lte:50}}).pretty() | where likes <= 50 |
大于 | {:{$gt:}} | db.col.find({"likes":{$gt:50}}).pretty() | where likes > 50 |
大于或等于 | {:{$gte:}} | db.col.find({"likes":{$gte:50}}).pretty() | where likes >= 50 |
不等于 | {:{$ne:}} | db.col.find({"likes":{$ne:50}}).pretty() | where likes != 50 |
数据类型 | {:{$type:}} | db.col.find({"likes":{$type:1}}).pretty() | where likes != 50 |
SpringBoot操作MongoDB
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mongodb</artifactId>
</dependency>
spring:
data:
mongodb:
host: 192.168.1.1
databasse: testDB
@Document(collection="entity")
public class Entity{ //创建实体类
@Id
private Long id;
private String fieldOne;
private String fieldTwo;
}
public interface testDao{ //创建数据访问接口
void save(Entity field);
void update(Entity field)
List<Entity> findAll();
void delete(Integer id);
}
@Component
public class TestDaoImpl implements testDao{
@Autowired
private MongoTemplate mongoTemplate;
/**
* 保存信息
* @param entity
*/
@Override
public void save(Entity entity){
mongoTemplate.save(entity);
}
/**
* 修改信息
* @param student
*/
@Override
public void update(Student student) {
//修改的条件
Query query = new Query(Criteria.where("id").is(student.getId()));
//修改的内容
Update update = new Update();
update.set("name",student.getName());
mongoTemplate.updateFirst(query,update,Student.class);
}
}