数据库 MongoDB

 MongoDB 数据库:主要运用于爬虫。 MongoDB是一个基于分布式,文件数据存储的NoSQL 数据库。是由c++语言编写,所以说,运行稳定,性能高。MongoDB的特点:1,文档式存储,可以把不同结构文档存储在同一个数据库里。2.面向集合的存储,适合存储JSON风格文件的形式。3.完整的索引支持,任何属性都可当索引。4,高效的传统存储方式:支持二进制数据及大型对象(如图片或照片) 

1.基本慨念:MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成.  MongoDB文档类似于JSON对象,字段可以包含其他文档,数组,文档数组.

下面是MySQL术语与MongoDB术语                                                                                                  MySQL术语/概念                 MongoDB术语/概念                 解释/说明                                                  database                                    database                           数据库                                                          table                                           collection                      数据库表| 集合                                                   row                                              document                   数据记录行 | 文档                                          column                                            field                           数据字段  | 域                                                 index                                              index                                  索引                                                       primary key                                primary key               主键,MongoDB自动将_ID设为主键                          三元素: 数据库,集合,文档,.  --集合就是关系数据库里的表,--文档对应着关系数据库的行.      ---文档:就是一个对象,有键值对构成,{'name':'goujing','gender':'男'}           集合:类似于关系数据中的表,存储对个文档,结构不固定,如可以存储如下文档在一个集合中---{'name':'goujing','gender':'男'}     {'name':'huangrong','age':'18'}   {'name':'shuihuzhuan','hero':'108'}    数据库:是一个集合的物理容器,一个数据库包含多个文档,一个服务器通常有多个数据库...

2.常用命令   2.1. 数据库操作:  1.查看当前数据库名称:db 2.查看所有数据库名称:show dbs     3.切换数据库:  如果数据库不存在,则指向数据库,但不创建,直到插入数据或创建集合时数据库才被创建. use 数据库名称     --默认的数据库为text,如果你没有创建新的数据库,集合将存放在test数据库中.4.数据库删除:删除当前指向的数据库,如果数据库不存在,则什么都不做db.dropDatabase()    2.2.集合操作  1.集合创建: 语法:db.createCollection(name,options)    其中,name是指要创建的集合名称,options是一个文档,用于指定设置 集合 里配置的指定文档的数量限制 上限,及,大小.例如1:db.createCollection('student') 创建一个student的集合.2.查看当前数据库的集合:语法--show collections  3 .删除集合:语法--db.集合名称.drop()     2.3 数据操作:  1 常用的几种数据类型  : Object ID:文档ID   String:字符串,最常用必须是有效的utf-8    Boolean:存储一个布尔值,true或false.   Integer:整数可以是32位或者64位这取决于服务器.Double:存储浮点数.Arrays:数组或列表,多个值存储到一个键.Null:存储Null值.Object:用于嵌入式文档,即一个值为一个文档.Timestamp:时间戳 .Date:存储当前日期或时间的UNIX时间格式..     object id ---(1).每个文档都有一个属性,为_id,保证每个文档的唯一性 (2).可以自己去设置_id插入文档(3).如果没有提供,那么MongoDB为每个文档提供了一个独特的_id,类型为objectID.(4).objectID是一个12字节的十六进制数.    2.  数据插入 : 语法--- db.集合名称.insert(document) .插入文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的Objectid -->db.stu.insert({'name':'yj','gender':1})   3.数据查询:语法----db.集合名称.find()  4.数据更新(修改):语法---db.集合名称.update({name:'hr'},{$set:{name:'hys'}}) 这是意思讲那么是hys更新name为hr.     * 更新多条匹配到的数据:--->db.stu.update({},{$set:{gender:0}},{multi:true})    5.数据保存 :语法--db.save(document) 6.数据删除:语法---db.集合名称.remove()

3.知识进阶 : <1>  数据查询 ----基本查询  1.find():查询    --db.集合名称.find({条件文档})    2.findOne():查询,只返回第一个。--db.集合名称.findOne({条件文档})   3.pretty():将结果格式化, --db.集合名称.find({条件文档}).pretty()   <2>比较运算符  *等于,默认等于判断,没有运算符。*小于$lt.   *大于或等于$lte *大于$gt  *大于或等于$gte  *不等于$ne .举例:查询年龄大于或者等于18的学生  db.stu.find({age:{$gte:18}})..   查询名称等于tom的学生 db.stu.find({name:'tom'})  <3> 逻辑运算符,查询多个条件,它们之间需要逻辑运算符连接。   *逻辑与:默认时逻辑与的关系,举例:查询年龄大于或等于18,并且性别为1的学生  db.stu.find({age:{$gte:18},gender:1})  *逻辑或:  $or  举例:查询年龄大于18,或者性别为0的学生  db.stu.find({$or({age:{$gt:18}},{gender:0}]})      *and和or 一起使用 举例: 查询年龄大于18或性别为0学生,并且学生姓名为jerry  - db.stu.find({$or:[{age:{$gte:18}},{gender:0}],name:'jerry'})    <4>范围运算符:"$in",  "$nin"  判断是否在某个范围内 , 举例 查询年龄为18 到22 之间的学生  db.stu.find({age:{$in:[18,22]}})    <5>支持正则表达式  :使用//或$regex编写正则表达式  举例:查询姓黄的学生 db.stu.find({name:/^黄/})<5> 投影 :在查询到的返回结果中,只选择必要的字段,而不是选择一个文档的整个字段,举例:一个文档由5个字段,需要显示只有3个,投影其中3个即可  --语法:参数为字段与值,值为1表示显示,值为0 表示不显示 --db,集合名称.find({},{字段名称:1,....})     <6> 排序:sort() 用于对结果进行排序  --db.集合名称.find().sort({字段:1,...})   ,参数1位升序排列,参数-1位降序排列,  举例: 根据性别降序排列,再根据年龄升序排列  db.stu().sort({gender:-1,age:1})  <7>统计    count()   语法:db.集合名称.find({条件}).count()   或者写成 db.集合名称.count({条件})   <8> 消除重复  distinct()  语法:db.集合名称.distinct('去重字段',{条件})  举例:查找年龄大于18 的性别(去重)  db.stu.distinct('gender',{age"{$gt:18}})

最后  .Mongodb与python交互                        1,在cmd上安装  python包,pip install pymongo            2.在pycharm里 import  pymongo     3.连接,创建客户端,client =pymongo.MongoClient("localhost",27017)   4.获得数据库test1   db.client[test1]   5.获得集合stu   stu =db[stu]     6.添加(插入)文档 s1 ={name:'yj',age:18}   ,s1_id =stu.insert_one(s1).inserted_id    7.查找一个文档  s2 =stu.find_one()    ,,查找多个文档1   for cur in stu.find(): print cur     ,,查找多个文档2   cur =stu.find()  cur.next(),   cur.next()    *.获取文档个数   print stu.count()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容

  • 一、MongoDB简介 概述MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WEB应用提供...
    EndEvent阅读 1,161评论 1 4
  • 一、MongoDB简介 概述MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WEB应用提供...
    王梓懿_1fbc阅读 493评论 0 3
  • 一、MongoDB简介 概述MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WEB应用提供...
    慕杨_阅读 557评论 0 4
  • 一、MongoDB简介 概述MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WEB应用提供...
    fly5阅读 284评论 0 0
  • 简介 MongoDB 是一个基于分布式文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WE...
    大熊_7d48阅读 36,698评论 1 9