MongoDB

MongoDB存储格式为JSON
用Mongo.exe测试
主要运行Mongod.exe存储数据

运行Mongdb
基本概念:数据库,集合(表),文档(行) ,面向文档的数据库
组成多个文档组成集合,多个集合组成数据库。
_id:_id是mongo默认添加的唯一键,确保集合总每个文档都有唯一标识,可以自己定义,也可以系统默认生成
自定义生成的话可以加快速度,默认生成为ObjectId对象
文档:键值对,
键的类型:字符串
值的类型:字符串,整型、布尔型等
集合概念:类似与表,1.由文档组成  2.无模式,也就是文档的类型不确定,而普通数据表当中列都是确定的 3.集合分类:由于这种模式,所以现在可以把所有文档放在一个集合当中,那么就造成相当大的管理问题了 ,所以有了子集合的出现
集合命名(1)分类:把相应的数据放到不同集合当中,也就是分好类
(2)子集合分类:通过命名来来划分子集合,也就是仅仅是一个命名,让你可以把集合归类,并不真实存在
,如下:不一定非要存在ttt集合


例子

对于网站的日志记录,可以根据日志的级别进行存储,Info级别日志存放在Info 集合中,Debug 级别日志存放在Debug 集合中,这样既方便了管理,也提供了查询性能。

基本概念注意:问当中键值对是有序的

{“greeting”:“hello,world”,“foo”: 3}

{“foo”: 3 ,“greeting”:“hello,world”}

数据库的命名:和文件夹的命名相同

关系型数据库通过外键关联的数据表:通过嵌套文档将关联的数据表写到一个文档当中(实际想想外键引用起来不就是嵌套文档)

db.te.insert(

{"dong":"bao"},

{"address":{"abao":123,"www":123}}

)

这种引用外键,创建关联表方式好处将以前的多张表表示为一个文档,比表与表之间的连接查询更方便迅速,数据更易于管理。

放弃关系型模型,主要原因就是未来获得更加方便的扩展性



存储格式:BSON格式存储,输入数据类型为JSON格式


下载安装:下载mongo,直接安装就好了,或者是解压,加入路径到path当中
启动服务器
 mongod --dbpath C:MongoDbdatadb -logpath C:MongoDBdatalogmongolog.log 
在date目录定义log 和 db目录
运行Mongd.exe进入测试
mongo 启动客户端
启动时选择配置


数据库操作
查看所有数据库 show dbs 
创建数据库或者选择:use DATABASE_NAME(如果数据库不存在,则创建数据库,否则切换到指定数据库)
注意:默认数据库为test,如果数据库为空不会显示出来,插入数据才显示出来
删除数据库db.dropDatabase()删除当前数据库,先用use选择指定数据库后进行操作

集合操作:
创建数据集合(等同于mysql当中的数据表)db.createCollection("test")
集合不用创建,插入的时候就自动创建
查看集合中的数据 db.test.find()
修改数据 db.test.update({"age":20},{"$set":{"age":300}})  db.test.update({"age":20},{"age":300})
save()   方法也可修改数据,如果查询不存在会插入数据
插入数据 db.test.insert({"name":"dongbao"})
一次插入多条数据   db.test.insert({"name":"dong"},{"age":20})   
 db.test.insert({ID:2,UserName:"dong,",password:"2",email:"jingya@163.com"})  
删除指定文档 db.test.remove({"age":25})
删除全部文档 db.test.remove()
删除指定集合 db.指定集合.drop()
查看指定数据库所有集合:db.getCollectionNames()
查看所有集合:show collections()
文档操作  :文档为json格式,存储是bson存储,Key:Value  key为全英文,可以不加双引号,数字可以不用加

导入数据
1.mongoimport导入json数据到goods数据库:
mongoimport -d goods -c test test.bat
不指定-c导入时自动创建
导入指定集合到goods数据库test集合,相当于导入json格式数据而已
2.mongoimport导入csv数据到goods数据库
3.mongorestore导入数据库级别
导入时会报这样的错误

原因是没有指定导入目录,
1.指定导入bson文件:
mongorestore -d goods D:mongoimport_exportgoods est.bson
2.指定含有bson的文件:
mongorestore -d goods D:mongoimport_exportgoods
--drop (不用删除原来数据库,可以直接导入时自动删除)
注意:直接导入json文件不行
导出数据:
1.mongoexport 导出集合到.bat文件:

mongoexport -d goods -c test -o test.dat

mongoexport 启动  -d(database指定数据库)  -c(collection指定集合) -o(指定导出文件地址和类型)
2.mongoexport 导出集合到csv文件:
3.mongodump导出数据库到文件bson,json格式:mongodump -d goods
(-o test 指定导出位置,指定文件夹)
默认创建dump/goods文件夹 下面放放着如下数据
4.导出所有数据库文件: mongodump (-h 127.0.0.1 -o /home/zhangy/mongodb/)
-h表示主机地址,也可以使别的主机(服务器) -d database -c collection --csv(默认保存为json格式),-o保存路径+保存文件名称,-f(节选字段) -q(查询结果)
5.导出部分字段:mongoexport  -h "127.0.0.1" -d seo -c kw_city --csv -o test1.csv  -f city,state
6.导出查询结果:mongoexport  -h "127.0.0.1" -d seo -c kw_city --csv -o test1.csv -q '{"state":"ny"}' -f city,state
7.导出json数据格式数据:    mongoexport  -d goods -c spgoods   -q '{"state":"ny"}' -f city,state

连接主机进行数据库操作


注意
mongodb数据库命令区分大小写,如db.dropDatabase()写错db.dropdatabase()就会出错。
查看帮助:mongoexport --help
mongoxport 导出csv中文乱码,用notepad++打开后设置为utf-8编码后再用excel打开就可以了





待处理:CSV文件类型,mongo导入导出数据到csv文件类型,复杂查询整理
mongo原理整理,查看所有集合,postgresql mongo备份数据库
上服务器先备份数据


为什么产生两个文件?

mongoexport使用参数:

-h:指明数据库宿主机的IP

-u:指明数据库的用户名

-p:指明数据库的密码

-d:指明数据库的名字

-c:指明collection的名字

-f:指明要导出那些列

-o:指明到要导出的文件名

-q:指明导出数据的过滤条件


mongoimport使用参数

-h:指明数据库宿主机的IP

-u:指明数据库的用户名

-p:指明数据库的密码

-d:指明数据库的名字

-c:指明collection的名字

-f:指明要导入那些列

-type:指明要导入的文件格式

-headerline:指明第一行是列名,不需要导入

-file:指明要导入的文件




ObjectId对象

BSON详解
存储用到是BSON格式,导出为bson,json,csv格式

当Client端要将写入文档,使用查询等等操作时,需要将文档编码为BSON格式,然后再发送给Server端。同样,Server端的返回结果也是编码为BSON格式再放回给Client端的。

也就是文档-》查询(插入)-》BSON(服务器)-》文档(解码)-》客户


















原文地址:https://www.cnblogs.com/wuqingzangyue/p/5770014.html