原来NoSQL之MongoDB数据库这么厉害,不学白不学 !
《原来NoSQL之MongoDB数据库这么厉害,不学白不学 !》要点: MongoDB 现在是数据时代,如果的数据已经不仅仅局限于关系型数据,生活中随时随地产生的数据,类型和数量多的让我们足够头疼,随着memchached的NoSQL产生以来,现在的非关系型数据库也越来越多,本日咱们就说说MongoDB,也顺带说下小编比较喜欢的可视化管理工具: MongoClient Robomongo 接来下说下MongoDB的核心点Shell: 三:MongoDB shell详解 1.mongodb自带shell工具的(mongo) 1)shell使用及常用命令 2)mongodb数据工具(包含导入导出) shell使用常用命令: ./mongo --port 27017 show dbs ---已有数据库列表 show collections ---已有集合列表 show users ---已有用户列表 use dbname ---切换数据库,系统自动延迟创建该数据库 db.account.save({'name':'test','addr':'china'}) --创建集合 db.account.find()---查看集合数据 db.dropDatabase() ---删除数据库(当前) db.account.drop() --删除当前数据集合 启动shell(默认链接端口是27017): [root@hadoop-senior01 bin]# ./mongo 或者 [root@hadoop-senior01 bin]# ./mongo --port 27017 查看数据库: > show dbs admin 0.000GB local 0.000GB > help 也可以切换当前不存在的数据库(动态的创建,延迟性加载,和关系型数据库不一样): > use sb switched to db sb > show collections > db.account.save({'name':'test','addr':'china'}) WriteResult({ "nInserted" : 1 }) > show collections account > show dbs admin 0.000GB local 0.000GB sb 0.000GB > db.account.find() { "_id" : ObjectId("58c724c5290846e2f0647206"),"name" : "test","addr" : "china" } mongodb根据算法自动分配id,也可以自定义,通常使用自定义算法 删除数据集合: > db.account.drop() true 删除当前数据: > db.dropDatabase() { "dropped" : "sb","ok" : 1 } > show dbs admin 0.000GB local 0.000GB 2.MongDB数据工具 数据库组件:mongod,mongos(分片的时候采用),mongo 数据库工具 mongodump -h dbhost -d dbname -o dbdirectory --数据库备份 mongorestore -h dbhost -d dbname --dir dbdirectory --数据库恢复 ./bsondump dump/bbs/account.bson --查看bson对象 ./mongoexport -d bbs -c account -q {} -f name,addr --csv >account.csv --数据导出工具,导出为csv格式 ./mongoexport -d bbs -c account -q {} -f name,addr>account.json导出为json格式 ./mongoexport -d bbs -c account -q ‘{“name”:”test2”}’ -f name,addr -csv>account.csv带查询条件导出 ./mongoimport -d ssb -c account --type csv --headerline --drop <mydata/account.csv--数据导入工具,导入csv文件 ./mongoimport -d bbs -c account --type json --drop<account.json --导入json文件 四:MongoDB文档,集合,数据库的概念: 1.基本概念: 1)文档是MongoDB中数据的基本单元,是MongoDB的核心概念,很类似关系数据库中的行 2)集合可以被看作没有模式的表 3)MongoDB每个实例都可容纳多个独立数据库,每个数据库都有自己的集合和权限 >db.account.count() 数据库》集合》文档document 数据库》表》记录(关系型数据库) 2.文档: 1)多个键及其关联的值有序地放置在一起就是文档 2)单键值文档:{“username”:”bbs11”} 3)多键值文档:{“_id”:”76b606a9f9b770517ca4d98b”,”userName”:”bbs59”,”acctAttr”:null} 4)文档中键/值对有序的 5)文档中的值不仅可以是字符串,也可以是其他数据类型(或者嵌入其他文档,数据类型部分详细讲解) 6)键是字符串,键可以使用任意UTF-8字符 7)键不能含有 (空字符),空字符表示键的结尾 8)和$作为保存字符,通常不应出现在键中 9)以下划线”_”开头的键通常情况下是保存的(_id) 10)MongoDB不但区分数据类型,也区分大小写 {“user”:”11”}与{“user”:11}不同,{“User”:”11”}与{“user”:11”},oracle默认是不区分大小写,也可以配置区分 11)文档中不允许有重复的键:{“userName”:”bbs11”,”userName”:”david”}非法 3.集合: 1)集合就是一组文档,与关系型数据库的表可类比 2)集合是无模式的,MongoDB对模式不做强制要求,由开发者灵活把握 命令规则: 3)集合名不能是空串””; 4)不能含有空字符 ; 5)不能以”system.”开头,这是系统集合保存的前缀 6)集合名不能含保存字符$; 7)组织集合的一种惯例是以.分开,近命名空间划分子集合,例如 > show collections system.users.system.indexes(admin) 4.数据库: 1)多个集合组成数据库 2)一个MongoDB实例可承载多个数据库,互相之间彼此独立 3)开发通常将一个应用的所有数据存放到同一个数据库中 4)磁盘中,MongoDB将不同数据库存放在不同文件中 5)命名规则: 1.数据库名是UTF-8字符串,最长64个字符 2.不能是空字符串” ”; 3.不能含’’号和.号和$号和号和 号 4.应全部小写 ***一个MongoDB实例可承载多个数据库***: 新建data/db2 重新启动MongoDB:bin/monod --dbpath=../data/db2 --port 27018 Web端口:28018 启动shell:bin/mongo --port 27018 6)系统保存数据库 7)admin:这是root数据库,添加用户到该数据库中,该用户会自动继承所有数据库权限 8)local:这个数据库中的数据永远不会被复制,可以用于存储限于当地数据单台服务器的任意集合 9)config:分片时,config数据库在内部使用,保留分片信息(config数据就保留分片的信息,就相当于配置服务器) 10)把数据库名放集合名前,得到的就是集合的完全限定名称,叫命令空间.命令空间长度不能超过121字节,实际使用时应小于100字节 ***完全限定名称*** >db.account.find() >bbs.account --完全限定名 JMongoBrowser 本日就说这些,下次继续,想咨询更多,可加群(Q):131322610 欢迎参与《原来NoSQL之MongoDB数据库这么厉害,不学白不学 !》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |