MongoDB数据库和吐槽微服务
1 MongoDB的特点和体系结构
MongoDB:一个跨平台的,面向文档的数据库,nosql数据库。支持数据结构松散,是类似于JSON的BSON格式,因此可以存储比较复杂的数据类型
特点:
1. 面向集合存储,易于存储对象类型的数据库
2. 模式自由
3. 支持动态查询
4. 支持完全索引,包含内部对象
5. 支持复制与故障恢复
6. 使用高效的二进制数据存储,包含大型对应(如视频等)
7. 自动处理碎片,支持云计算层次的扩展性
8. 支持Python,PHP,Ruby,java,c,c#,javasript,Perl及c++语言的驱动程序
9. 文件存储格式为BSON(一种JSON的扩展),
体系结构:
MongoDB 的逻辑结构是一种层次结构。主要由:文档(document)、集合(collection)、数据库(database)这三部分组成的。逻辑结构是面向用户的,用户使用 MongoDB 开发应用程序使用的就是逻辑结构。
(1)MongoDB 的文档(document),相当于关系数据库中的一行记录。
(2)多个文档组成一个集合(collection),相当于关系数据库的表。
(3)多个集合(collection),逻辑上组织在一起,就是数据库(database)。
(4)一个 MongoDB 实例支持多个数据库(database)
数据类型:
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]/}
数组:数据列表或数据集可以表示为数组,{“x”: [“a“,“b”,”c”]}
内嵌文档:文档可以嵌套其他文档,被嵌套的文档作为值来处理,{“x”:{“y”:3 }}
对象Id:对象id是一个12字节的字符串,是文档的唯一标识,{“x”: objectId() }
二进制数据:二进制数据是一个任意字节的字符串。它不能直接在shell中使用。如果要
将非utf-字符保存到数据库中,二进制数据是唯一的方式。
代码:查询和文档中可以包括任何JavaScript代码,{“x”:function(){/…/}}
2 MongoDB命令
基本命令:
1. 创建目录:md d:\data
2. 启动服务:MongoDB --dbpath=d:\data
3. 制定端口:--port
4. 退出mongodb:exit
语法:
1. 创建数据库:use 数据库名称
2. 插入和查询文档:db.集合名称.insert(数据)
3. 查询集合:db.集合。find()
4. 按条件查询:db.spit.find({userID:'1023'})
5. 指定条件:db.spit.find().limit(3)
6. 修改与删除文档:db.集合名称.update(条件,修改后的数据) db.集合名称.remove(条件)
7. 统计条数:db.spit.count({userid:"1013"})
8. 模糊查询:
db.spit.find({content:/流量/})
db.spit.find({content:/^加班/})
9. 大于 小于 不等于 :
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
10. 包含于不包含:db.spit.find({userid:{$in:["1013","1014"]}})
11. 条件连接:db.spit.find({$and:[ {visits:{$gte:1000}} ,{visits:{$lt:2000} }]})
12. 列值增长:db.spit.update({_id:"2"},{$inc:{visits:1}} )
13.
3 运用Java操作MongoDB
SpringData家族成员之一,用于操作MongoDb的持久层框架,封装了底层的mongodbdriver。
4 使用SpringDataMongoDB完成吐槽微服务的开发
采用SpringDataMongoDB框架实现吐槽微服务的持久层
实现功能:
1. 基本增删改查API
2. 根据上级ID查询吐槽列表
3. 吐槽点赞
4. 发布吐槽