MongoDB入门
关系型数据库和非关系数据库的区别: 关系型:表与表之间有关系(一对一,一对多(外键),多对多(中间表))
非关系型:表之间没有关系
MongoDB 面向文档的数据库
BSON之名缘于JSON,含义为Binary JSON(二进制JSON)。
使用场景:
1、数据量大
2、价值较低
3、操作频繁
存储的数据类型
1、null 用于表示空值或者不存在的字段
2、布尔型 true false
3、数值 ,默认使用64位浮点型数值
{“x”:3.14} 或 {“x”:3} 都是代表浮点型
存储整型:
存储长整型:
主键的使用
在mongodb中,主键名只能为 _id
安装
1、docker pull mongo //安装
2、docker run -d --name=tensquare_mongo -p 27017:27017 mongo //启动
3、mongo 192.168.2.36 //windows连接
使用
1、use databasename //自动创建数据库
2、 db //查看当前使用数据库
3、 show dbs //查看所有数据库
创建集合 db.createCollection("name")
查看所有集合 show collections
直接插入数据则直接创建集合
4、 db.collectionname .insert({username:"张三"}) //插入数据
5、 db.collectionname .find() //查看数据
6、db.collectionname .insert({_id:"1",username:"李四“}) //覆盖默认id
7、db.collectionname .find({_id:"1"}) //根据条件 查询id为1的
8、db.collectionname .findOne(username:"李四") //查询单个
9、db.collectionname .find().limit(3) //查询前3条
10、db.collectionname .update({"_id":"1"},{$set:{age:NumberInt(10)}}) //修改指定条件__id的指定条件值,若存储的age为整型则修改的时候也要赋值为整型
11、db.collectionname .remove({_id:"1"}) //删除指定条件的值
db.collectionname .remove() //删除所有
12、db.collectionname .count() //查询总记录数据
db.collectionname .count({“username":"张三"}) //查询指定条件的总记录数
13、db.collectionname .find({username:"/张/"}) //正则: 模糊查询 查询包含张的姓名
db.collectionname .find({username:"/^张/"}) //查询以张开头的姓名
14、db.collectionname .find({age:{$gt:10}}) //查询年龄大于10的记录
$gt 大于 grather than
$lt 小于 less than
$gte 大于等于 grather than equal
$lte 小于等于 less than equal
$ne 不等于 no eaual
15、db.collectionname .find({_Id:{$in:["1","2"]}}) //查询id 为1和2的记录
db.collectionname .find({_id:{$nin:["1","2"]}) //查询id不为1和2 的记录
16、db.collectionname .find({and:[{age:{gt:10}},{age:{$ls:20}}]}) //查询年龄在10-20之间的记录
db.collectionname .find({or:[{username:"张三"},{age:{ls:10}}]})//查询姓名为张三或者年龄小于10的记录
17、db.collectionname .update({"_id":1},{$inc:{age:NumberInt(1)}})//修改时在原有基础上增减
java操作mongodb
1、导入依赖
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.6.3</version>
</dependency>
2、查询操作
public static void main(String[] args) {
//连接mongo服务
MongoClient mongoClient=new MongoClient("192.168.2.36", 27017);
//得到操作的数据库
MongoDatabase spitdb = mongoClient.getDatabase("spitdb");
//得到要操作集合
MongoCollection<Document> spit = spitdb.getCollection("spit");
//有条件的查询
//根据id查询
// BasicDBObject basicDBObject=new BasicDBObject("_id", "1");
//查询大于等于20的年龄
BasicDBObject basicDBObject=new BasicDBObject("age", new BasicDBObject("$gte",20));
//得到集合中的数据
FindIterable<Document> documents = spit.find(basicDBObject);
//遍历结合
for(Document item:documents){
System.out.println("id:"+item.getString("_id"));
System.out.println("username:"+item.getString("username"));
System.out.println("age"+item.getInteger("age"));
}
//关闭连接
mongoClient.close();
}
3、添加
public static void main(String[] args) {
//连接mongo服务
MongoClient mongoClient = new MongoClient("192.168.2.36", 27017);
//得到操作的数据库
MongoDatabase spitdb = mongoClient.getDatabase("spitdb");
//得到要操作集合
MongoCollection<Document> spit = spitdb.getCollection("spit");
//添加数据
Map<String, Object> map = new HashMap<>();
map.put("_id","4");
map.put("username", "louchen");
map.put("age", 21);
Document document = new Document(map);
spit.insertOne(document);
//关闭连接
mongoClient.close();
}
springboot使用mongodb
1、导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2、配置信息
server:
port: 9006
spring:
application:
name: tensquare-spit
data:
#设置mongodb连接信息
mongodb:
host: 192.168.2.36
database: spitdb
3、接口继承 和 jpa操作类似
public interface SpitDao extends MongoRepository<Spit,String> {
public Page<Spit> findByParentid(String parentid, Pageable pageable);
}
3、使用原生的mongo来实现自增
@Autowired
private MongoTemplate mongoTemplate;
public void thumbup(String id){
//使用原生的mongo操作
Query query=new Query();
//设置查询条件
query.addCriteria(Criteria.where("_id").is(id));
//设置修改值
Update update=new Update();
//自增1
update.inc("thumbup", 1);
//根据集合操作
mongoTemplate.updateFirst(query, update,"spit");
}