1024_day02_文档型数据库MongoDB

1.MongoDB?

MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热 门 的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最 像关 系数据库的产品。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以 存 储比较复杂的数据类型。 MongoDB 的官方网站地址是:http://www.mongodb.org/

2.适合使用MongoDB来实现数据的存储

(1)数据量大

(2)写入操作频繁

(3)价值较低(允许小部分数据丢失)

3.数据类型

null:用于表示空值或者不存在的字段,

{“x”:null} 布尔型:布尔类型有两个值true和false,

{“x”:true} 数值:shell默认使用64为浮点型数值。{“x”:3.14}或{“x”:3}。

对于整型值,可以使用 NumberInt(4字节符号整数)或NumberLong(8字节符号整数), {“x”:NumberInt(“3”)}{“x”:NumberLong(“3”)}

字符串:UTF-8字符串都可以表示为字符串类型的数据,{“x”:“呵呵”}

日期:日期被存储为自新纪元依赖经过的毫秒数,不存储时区,{“x”:new Date()}

正则表达式:查询时,使用正则表达式作为限定条件,语法与JavaScript的正则表达式相 同,{“x”:/[abc]/}

4.Docker 环境下MongoDB安装

docker run ‐di ‐‐name=tensquare_mongo ‐p 27017:27017 mongo

5.MongoDB常用命令

选择和创建数据库的语法格式:如果数据库不存在则自动创建

use 数据库名称

以下语句创建spit数据库

use spitdb

插入与查询文档

db.集合名称.insert(数据);
db.集合名称.find()

统计条数

db.spit.count()

如果按条件统计 ,例如:统计userid为1013的记录条数

db.spit.count({userid:"1013"})

大于 小于 不等于

db.集合名称.find({ "field" : { $gt: value }}) // 大于: field > value
db.集合名称.find({ "field" : { $lt: value }}) // 小于: field < value
db.集合名称.find({ "field" : { $gte: value }}) // 大于等于: field >= value
db.集合名称.find({ "field" : { $lte: value }}) // 小于等于: field <= value
db.集合名称.find({ "field" : { $ne: value }}) // 不等于: field != value

使用

db.spit.find({visits:{$gt:1000}})

列值增长

db.spit.update({_id:"2"},{$inc:{visits:NumberInt(1)}} )

6.Java操作MongoDB

(1)创建工程 mongoDemo, 引入依赖

<dependencies>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongodb‐driver</artifactId>
        <version>3.6.3</version>
    </dependency>
</dependencies>
        

(2)创建测试类

public class MonTest {
    public static void main(String[] args) {

        //创建连接 mongodb 数据库
        MongoClient client = new MongoClient("192.168.98.132");
        //打开数据库
        MongoDatabase database = client.getDatabase("spitdb");
        //得到要操作的表
        MongoCollection<Document> split = database.getCollection("spit");
        //封装查询条件
        BasicDBObject bson = new BasicDBObject("userid","1013");

       // BasicDBObject bson=new BasicDBObject("visits",new BasicDBObject("$gt",1000) );// 构建查询条件
        FindIterable<Document> documents = split.find(bson);
        for (Document document : documents) {
            System.out.println("用户id" + document.getString("userid"));
            System.out.println("内容" + document.getString("content"));
        }
        client.close();
    }
}

 7.SpringDataMongoDB

pom.xml引入依赖

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

创建application.yml

server:
  port: 9006
spring:
  application:
    name: tensquer_spit
  data:
    mongodb:
      host: 192.168.98.132
      database: spitdb
  redis:
    host: 192.168.98.132

dao类的配置 集成MongoRepository就可以使用springDataMongoDB写好的方法

public interface SpitDao extends MongoRepository<Spit, String> {

    public Page<Spit> findByParentid(String parentid, Pageable pageable);
}

mongoTemplate直接操作数据库

@Autowired
    private MongoTemplate mongoTemplate;
public void save(Spit spit) {
        spit.set_id(idWorker.nextId() + "");
        spit.setPublishtime(new Date());//发布日期
        spit.setVisits(0);//浏览量
        spit.setShare(0);//分享数
        spit.setThumbup(0);//点赞数
        spit.setComment(0);//回复数
        spit.setState("1");//状态

        if(spit.getParentid()!=null && !"".equals(spit.getParentid())){
            //如果存在上级ID,评论 数加1
            Query query=new Query();
            query.addCriteria(Criteria.where("_id").is(spit.getParentid()));
            Update update=new Update();
            update.inc("comment",1);
            mongoTemplate.updateFirst(query,update,"spit");
        }
        spitDao.save(spit);
    }

 

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/asndxj/p/12332636.html
今日推荐