MongoDB是一个开源的,高性能,无模式(没有明显的列)的文档型数据库。它支持的数据结构非常松散,是一种类似于Json的格式叫做bson(二进制json)。
MongoDB的使用场景:传统数据库MySQL无法胜任的三高(High Performance, High Storage, High Scalability)场景。
High Performance, 对数据库高并发读写。
High Storage,对海量数据的高效率存储和访问需求。
High Scalability&Availability,对数据库的高可扩展和高可用。
具体场景:
1)社交场景,使用MongoDB存储用户信息以及朋友圈信息地理位置等。
2)游戏场景,使用MongoDB存储用户信息,装备积分等。
3)物流场景,使用MongoDB存储订单信息,订单状态在运送过程中会不断更新。
4)物联网场景,使用MongoDB存储所有接入的智能设备以及设备会报的日志信息。
5)视频直播,存储用户信息点赞信息等。
这些场景数据量大, 写入频繁,价值不较低对事务性要求不高。如没有金钱的相关信息。
什么时候选择MongoDB,应用不需要复杂的join,新应用无法确定数据模型的场景,需要高QPS,数据量在PB级别,需要快速水平扩展,需要大量的地理位置文本查询。
MongoDB的安装,可以安装在windows下也可以安装在Linux下。Windows可以msi安装也可以直接解压缩。Linux下直接解压缩即可。https://www.mongodb.com/try/download/community
对MongoDB的增删改查
插入 ${dbname}.${collectionname}.insert()
${dbname}.${collectionname}.insertOne()
${dbname}.${collectionname}.insertMany()
查找 ${dbname}.${collectionname}.find() 查询所有符合条件的文档。
${dbname}.${collectionname}.find()
修改 ${dbname}.${collectionname}.update({name},{age}) 默认情况下会使用新对象替换旧对象,update()默认值修改一条记录。
${dbname}.${collectionname}.updateOne({name},{$set:{age}}) $set增加属性 $unset删除属性。
${dbname}.${collectionname}.updateMany() 默认情况下会使用新对象替换旧对象。updateMany()默认值修改一条记录。
${dbname}.${collectionname}.replaceOne()
删除 ${dbname}.${collectionname}.remove()
${dbname}.${collectionname}.deleteOne()
${dbname}.${collectionname}.deleteMany()
Document之间的关系
1对1
1对多
多对1
多对多