数据库 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()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

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

友情链接更多精彩内容