zoukankan      html  css  js  c++  java
  • 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(服务器)-》文档(解码)-》客户


















  • 相关阅读:
    第四部分 | 第19章 —— Cocos2d-HTML5
    第四部分 | 第18章 —— 可视化开发
    第四部分 | 第17章 —— 多平台下的Cocos2d
    第三部分 | 第16章 —— 并发编程
    第三部分 | 第15章 —— 缓存与池
    第三部分 | 第14章 —— 网络
    第三部分 | 第13章 —— 数据持久化
    第二部分 | 第12章 —— 物理引擎
    ASA failover配置(A/S)
    深信服AF ipsec ikev2 新版本尝鲜(对接Azure)
  • 原文地址:https://www.cnblogs.com/wuqingzangyue/p/5770014.html
Copyright © 2011-2022 走看看