mongodb了解与使用(一) 2019-03-28 程序之旅 暂无评论 767 次阅读 MongoDB综述 什么是NoSQL Not Only SQL ,本质也是一种数据库的技术,相对于传统数据库技术,它不会遵循一些约束,比如:sql标准、ACID属性,表结构等。 - 使用的原因 - 满足对数据库的高并发读写 - 对海量数据的高效存储和访问 - 对数据库高扩展性和高可用性 - 灵活的数据结构,满足数据结构不固定的场景 - 缺点 - 一般不支持事务 - 实现复杂SQL查询比较复杂 - 运维人员数据维护门槛较高 - 目前不是主流的数据库技术 什么是MongoDB MongoDB是一个数据库,高性能、无模式、文档性,目前nosql中最热门的数据库,开源产品,基于c++开发。是nosql数据库中功能最丰富,最像关系数据库的。 特性 - 面向集合文档的存储:适合存储Bson(json的扩展)形式的数据; - 格式自由,数据格式不固定,生产环境下修改结构都可以不影响程序运行; - 强大的查询语句,面向对象的查询语言,基本覆盖sql语言所有能力; - 完整的索引支持,支持查询计划; - 支持复制和自动故障转移; - 支持二进制数据及大型对象(文件)的高效存储; - 使用分片集群提升系统扩展性; - 使用内存映射存储引擎,把磁盘的IO操作转换成为内存的操作; 不适合场景 - 高度事务性系统:例如银行、财务等系统。MongoDB对事物的支持较弱; - 传统的商业智能应用:特定问题的数据分析,多数据实体关联,涉及到复杂的、高度优化的查询方式; - 使用sql方便的时候;数据结构相对固定,使用sql进行查询统计更加便利的时候; mongoDB的安装 1. 下载地址:https://www.mongodb.org/dl/linux/x86_64 2. 上传到linux系统后解压,在解压后得到的文件中创建data目录,logs目录以及logs/mongodb.log文件 3. 在bin目录中添加配置文件 storage: dbPath: "/usr/local/apache/mongoDB/mongodb-linux-x86_64-rhel70-3.4.10/data" systemLog: destination: file path: "/usr/local/apache//mongoDB/mongodb-linux-x86_64-rhel70-3.4.10/logs/mongodb.log" net: port: 27022 http: RESTInterfaceEnabled: true # 3.4以上的默认为true,添加后可能会报错 processManagement: fork: false 4. 打开客户端连接 ./mongo localhost:27022 MongoDB的基本使用 查询 - 查询喜欢的城市包含东莞和东京的user # select * from users where favorites.cites has "东莞"、"东京“ db.users.find({ "favorites.cites" : { "$all" : [ "东莞" , "东京"]}}) - 查询国籍为英国或者美国,名字中包含s的user # select * from users where username like '%s%' and (country= English or country= USA) db.users.find({ "$and" : [ { "username" : { "$regex" : ".*s.*"}} , { "$or" : [ { "country" : "English"} , { "country" : "USA"}]}]}) 增加 ``` db.users.insert(object) ``` 修改 - 把lison的年龄修改为6岁 # update users set age=6 where username = 'lison' db.users.updateMany({ "username" : "lison"},{ "$set" : { "age" : 6}},true) # true 修改多条数据,默认值为true - 喜欢的城市包含东莞的人,给他喜欢的电影加入“小电影2”“小电影3” # update users set favorites.movies add "小电影2 ", "小电影3" where favorites.cites has "东莞“ db.users.updateMany({ "favorites.cites" : "东莞"}, { "$addToSet" : { "favorites.movies" : { "$each" : [ "小电影2 " , "小电影3"]}}},true) 删除 - 删除名字为lison的user # delete from users where username = ‘lison’ db.users.deleteMany({ "username" : "lison"} ) - 删除年龄大于8小于25的user # delete from users where age >8 and age <25 db.users.deleteMany({"$and" : [ {"age" : {"$gt": 8}} , {"age" : {"$lt" : 25}}]}) 打赏: 微信, 支付宝 标签: mongoDB 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。