memcached redis : kv数据库(key/value) mongodb 文档数据库,存储的是文档(Bson->json对象二进制化后叫bson,js的二进制对象,引擎是用js实现的). 特点:内部执行引擎为JS解释器, 把文档存储成bson结构,在查询时,转换为JS对象,并可以通过熟悉的js语法来操作.
mongo和传统型数据库(mqsql)相比,最大的不同: 传统型数据库: 结构化数据, 定好了表结构后,每一行的内容,必是符合表结构的,就是说--列的个数,类型都一样. mongo文档型数据库: 表下的每篇文档,都可以有自己独特的结构(json对象都可以有自己独特的属性和值) 思路: 如果有电影, 影评, 影评的回复, 回复的打分 在传统型数据库中, 至少要4张表, 关联度非常复杂. 在文档数据库中,通过1篇文档,即可完成. 体现出文档型数据库的反范式化. { fiim:’天龙八部’ comment:[ {content:’王家卫的电影风格’, reply:[‘支持’,’好’] } ] }
mongodb的安装 1: 下载mongodb www.mongodb.org 下载最新的stable版 2: 解压文件 3: 不用编译,本身就是编译后的二进制可执行文件.
4: 启动mongod服务 5: mongodb非常的占磁盘空间, 刚启动后要占3-4G左右, 如果你用虚拟机练习,可能空间不够,导致无法启动. 可以用 --smallfiles 选项来启动, 将会占用较小空间 400M左右.
mongo也可以去连接其他数据库。
1.1: show dbs 查看当前的数据库,admin放的是和管理相关的,用户的操作,安全配置。Local:放其他数据库的信息,这2个库不要动。 1.2 use test 选库 1.2 show tables/collections 查看当前库下的collection,mongodb的表不叫表叫collection, 1.3 如何创建库?(没有createdatabase 命令) Mongodb的库是隐式创建,你可以use 一个不存在的库,use shop就创建了一个库, 然后在该库下创建collection,即可创建库db.createCollection(‘user’) 创建collection,这样就创建了一个库和collection(表),把表创建完了库才能创建好。 use shop db.createCollection("user") show dbs: admin 0.000GB local 0.000GB shop 0.000GB test 0.000GB 表就是一个个的集合,里面是一个个的文档,没有表的结构。表里面就是一个个的json对象。 use shop show tables db.user.insert({name:"1yw",age:1120}) db.user.insert({name:"1yww",age:1120,tt:"1oo"}) db.user.insert({na:113,ageeee:"1888"}) db.user.insert({ _id : 1112, ma : 113, ageeee : "1888",aaa:{aa:"ll0",sss:"ddddd"} }) db.user.insert({_id:1113,ss:[123,"ddd",'kk'],ma: 113, ageeee : "1888",aaa:{aa:"ll0",sss:"ddddd"} }) db.user.find(): { "_id" : ObjectId("5a448f0283c2d5efb2d581d8"), "name" : "yw", "age" : 120 } { "_id" : ObjectId("5a448f0283c2d5efb2d581d9"), "name" : "yww", "age" : 120, "tt " : "oo" } { "_id" : ObjectId("5a448f0283c2d5efb2d581da"), "na" : 13, "ageeee" : "888" } { "_id" : ObjectId("5a448f8283c2d5efb2d581db"), "name" : "1yw", "age" : 1120 } { "_id" : ObjectId("5a448f8283c2d5efb2d581dc"), "name" : "1yww", "age" : 1120, " tt" : "1oo" } { "_id" : ObjectId("5a448f8283c2d5efb2d581dd"), "na" : 113, "ageeee" : "1888" } 自己指定id: { "_id" : 1000, "name" : "1yw", "age" : 1120 } { "_id" : 1001, "name" : "1yww", "age" : 1120, "tt" : "1oo" } { "_id" : 1002, "na" : 113, "ageeee" : "1888" } { "_id" : 1113, "ss" : [ 123, "ddd", "kk" ], "ma" : 113, "ageeee" : "1888", "aaa " : { "aa" : "ll0", "sss" : "ddddd" } } Collection的意思没有,表是有结构的是有意思的,collection只是一个口袋一个集合。 1.5 collection允许隐式创建 Db.collectionName.insert(document); show collections :user db.goods.insert({1:1,2:'2','3':3}) //就默认创建了goods这个collectio(表),没必要提前创建,collectios是表的集合 show collections:goods user db.goods.find()://不同的数据库不能操作,要切换数据库, { "_id" : ObjectId("5a44961e83c2d5efb2d581de"), "1" : 1, "2" : "2", "3" : 3 } 1.6 db.collectionName.drop() , 删除collection use test show tables db.user.drop() show collections 1.7 db.dropDatabase(); 删除database use shop //先移到本数据库 show tables db.dropDatabase() use test show tables db.dropDatabase() show dbs