MongoDB入门

Lou.Chen
大约 3 分钟

关系型数据库和非关系数据库的区别: 关系型:表与表之间有关系(一对一,一对多(外键),多对多(中间表))

非关系型:表之间没有关系

MongoDB 面向文档的数据库

BSON之名缘于JSONopen in new window,含义为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");
 }