1、mongodb在数据库层面上的基本命令

查看有哪些数据库:show dbs
切换数据库use 数据库
查看当前数据库db注意创建数据库的时候如果不添加数据是看不见的,但是可以切换,往该数据库中添加信息之后,该数据可以被db到

清空数据库db.dropDatabase():在哪个数据库之下操作就清空的是哪个数据库
创建并且自动切换数据库use 数据库:有的化直接切换没有的话创建了在切换

2、mongodb在集合层面上的基本命令

①查看当前的工作库:db
②查看当前数据库中的表(集合)show tables或者show collections
③手动创建集合db.createCollection('name',[options])
name:要创建集合的名称,options:可选参数(不写capped默认是false没有存储上限)
egdb.createCollection('student',{capped:true,size:4})
它的意思是创建一个student的集合(表),它的数据存储是有上限的,大小为4个字节,当超过上限就会将之前的数据覆盖
④非手动创建集合db.hh.insert({name:'beiyue'}):直接向不存在的集合中添加数据,该命令会直接创建集合在向集合中插入数据,如果该集合存在则直接向存在的集合中插入

⑤查看集合中有哪些数据db.stu.find():将stu的集合(表)中的所有数据显示出来

⑥删除集合db.student.dcrop():student为你想要删除的表名

⑦查看集合是否有上限的命令bd.stu.isCapped()有上限为true没有上限为false

3、MongoDB的数据类型

String:字符串,必须是有效的UTF-8
Boolean:存储一个布尔值,true或者false
Integer:整数可以是32位或64位,这取决于服务器
Double:存储浮点数
Arrays:数组或列表
Object:嵌入式文档
Null:存储Null值
Timestamp:时间戳, 表示从1970-1-1到现在的总秒数
Object ID是一个12字节的十六进制数

4、mongo主要的增删改查

mongoDB中一张表称为一个集合

4.1增加集合(表)中的数据

单条插入数据db.表名.insert({k:v,k:v...})

多条插入数据for(i=3;i<10;i++)db.student.insert({x:i})

多条插入数据db.表名.insert([{k:v,k:v...},{k:v,k:v...}])

4.2修改集合(表)中的数据

①根据存储数据的_id值来修改数据相当于重写数据db.student.save({"_id":***,name:***})

②如果不写_id那么会直接在集合中添加一条数据db.student.save({name:***,gender:***})

③修改集合(表)中的数据db.stu.update({query}, {update}, {multi: boolean})
参数query:查询条件
参数update:更新操作符
参数multi:可选,默认是false,表示只更新找到的第一条数据,值为true表示把满足条件的数据全部更新
相当于覆盖之前的数据和save功能相似,只是一个通过_id一个通过任意查询条件

④修改集合(表)中的数据db.stu.update({query}, {$set:{update}}, {multi: boolean})
参数query:查询条件
参数$set:{update}:指定键值更新操作符
参数multi:可选,默认是false,表示只更新找到的第一条数据,值为true表示把满足条件的数据全部更新
可以不覆盖之前的数据,改想要修改的数据,其余值不动

4.3查询集合(表)中的数据

①根据限制条件(可有多个限制条件)查询符合的数据,以漂亮的形式全部打印出来db.stu.find({age:18,k:v,k:v}).pretty()

②根据条件限制查询符合的数据,以漂亮的形式打印出数据库中存储的第一条(也只有一条)信息db.stu.findone({age:18})
③查询符合查询条件结果的条数db.stu.find({*:*}).count()

④指定查询数据的条数db.stu.find().limit(2)

⑤指定跳过前2条数据查询接下来的2条数据db.stu.find().skip(2).limit(2)

⑥映射:指定返回的字段,如果为1则返回该字段,如果为0则返回除该字段外所有字段。_id如果没写会默认为1返回该_id字段,db.stu.find({},{_id:0,**:**}):第一个{}代表查询的条件不写代表查找所有,{_id:0}代表显示其他字段不显示_id字段



⑦排序:将查询的结果已指定的顺序返回在界面当中可以结合映射等其他查询方法使用db.stu.find({},{'_id':0,age:1,name:1}).sort({age:1})1代表正序。-1代表倒序

4.3.1根据比较运算符的限制查找

等于:默认是等于判断,没有运算符
小于:$lt (littie than的缩写)
小于等于:$lte (e:equally的缩写)
大于:$gt(greater than的缩写)
大于等于:$gte
查询age大于等于18的数据db.stu.find({age:{$gt:18}})

查询age小于等于18并且gender为true的数据db.stu.find({age:{$lte:18},gender:true)

4.3.2根据范围运算符的限制查找

使用$in,$nin判断是否在某个范围内
查询年龄为18、20的学生db.stu.find({age:{$in:[18,20]}})

4.3.3根据逻辑运算符的限制查找

or:使用$or,值为数组,数组中每个元素为json
查询年龄大于18或者性别为false的数据db.stu.find({$or:[{age:{$gt:18}},{gender:false}]})

4.3.4自定义查询

mongo shell 是一个js的执行环境,使用$where 写一个函数(只能使用$where), 返回满足条件的数据,查询年龄大于30的学生db.stu.find({$where:function(){return this.age>30;}})

4.4删除集合(表)中的数据

①删除数据库db.dropDatabase():在哪个数据库里执行的就会清空该数据库,db好的时候还会显示该库当使用其他库的时候它就被彻底删除
②删除集合(表)db.stu.drop()stu为想删除的表名
③删除表中的所有数据db.stu.remove({}){}里面为query的条件不写就代表所有④删除集合中查询到的第一条数据db.stu.remove({age:18},{justOne:true})

5、mongodb的测试题

使用数组的方式在数据库中建立一个persons的集合将测试数据插入其中

db.persons.insert([
{name:"jim",age:25,email:"75431457@qq.com",c:89,m:96,e:87,country:"USA",books:["JS","C++","EXTJS","MONGODB"]},
{name:"tom",age:25,email:"214557457@qq.com",c:75,m:66,e:97,county:"USA",books:["PHP","JAVA","EXTJS","C++"]},
{name:"lili",age:26,email:"344521457@qq.com",c:75,m:63,e:97,country:"USA",books:["JS","JAVA","C#","MONGODB"]},
{name:"zhangsan",age:27,email:"2145567457@qq.com",c:89,m:86,e:67,country:"China", books:["JS","JAVA","EXTJS","MONGODB"]},
{name:"lisi",age:26,email:"274521457@qq.com",c:53,m:96,e:83,country:"China",books:["JS","C#","PHP","MONGODB"]},
{name:"wangwu",age:27,email:"65621457@qq.com",c:45,m:65,e:99,country:"China",books:["JS","JAVA","C++","MONGODB"]},
{name:"zhaoliu",age:27,email:"214521457@qq.com",c:99,m:96,e:97,country:"China",books:["JS","JAVA","EXTJS","PHP"]},
{name:"piaoyingjun",age:26,email:"piaoyingjun@uspcat.com", c:39,m:54,e:53,country:"Korea",books:["JS","C#","EXTJS","MONGODB"]},
{name:"lizhenxian",age:27,email:"lizhenxian@uspcat.com",c:35,m:56,e:47,country:"Korea", books:["JS","JAVA","EXTJS","MONGODB"]},
{name:"lixiaoli",age:21,email:"lixiaoli@uspcat.com",c:36,m:86,e:32,country:"Korea",books:["JS","JAVA","PHP","MONGODB"]},
{name:"zhangsuying",age:22,email:"zhangsuying@uspcat.com",c:45,m:63,e:77,country:"Korea",books:["JS","JAVA","C#","MONGODB"]}
])

1.查询年龄大于25小于27的name,age
db.persons.find({age:{$in:[25,27]}},{_id:0,age:1,name:1})或者db.persons.find({age:{$lt:27,$gt:25}},{_id:0,name:1,age:1})

2.查询出国家不是美国的name
db.person.find({country:{$ne:'USA'}},{_id:0,name:1,country:1})

3.查询国籍是中国或者美国的学生信息
db.persons.find({$or:[{country:'USA'},{country:'China'}]},{_id:0,name:1,country:1,age:1,email:1})

4.查询语文成绩大于85或者英语成绩大于90的学生信息
db.persons.find({$or:[{c:{$gt:85}},{e:{$gt:90}}]},{_id:0,name:1,c:1,e:1})

5.查询出名字中存在"li"的学生信息db.persons.find({name:/li.*?/},{_id:0,name:1})

6.查询喜欢看MONGODB和PHP的学生db.persons.find({books:{$all:['MONGODB','PHP']}},{_id:0,books:1})$all和$in有异曲同工之妙

7.查询第二本书是JAVA的学生信息db.persons.find({'books.1':'JAVA'},{_id:0,books:1,name:1})

8.查询喜欢的书数量是4本的学生db.persons.find({books:{$size:4}},{_id:0,name:1,books:1})

9.查询出persons中一共有多少国家分别是什么去重db.persons.distinct('country')

python爬虫十九:mongodb的使用相关推荐

  1. python第二十九课——文件读写(复制文件)

    自定义函数:实现文件复制操作有形参(2个) 没有返回值相似版(不用) def copyFile(src,dest):#1.打开两个文件:1个关联读操作,1个关联写操作fr=open(src,'rb') ...

  2. Python 爬虫十六式 - 第六式:JQuery的假兄弟-pyquery

    PyQuery:一个类似jquery的python库 学习一时爽,一直学习一直爽   Hello,大家好,我是 Connor,一个从无到有的技术小白.上一次我们说到了 BeautifulSoup 美味 ...

  3. Python爬虫十六式 - 第三式:Requests的用法

    Requests: 让 HTTP 服务人类 学习一时爽,一直学习一直爽   Hello,大家好,我是Connor,一个从无到有的技术小白.今天我们继续来说我们的 Python 爬虫,上一次我们说到了 ...

  4. Python 爬虫十六式 - 第七式:RE:用匹配来演绎编程的艺术

    RE:用匹配来演绎编程的艺术 学习一时爽,一直学习一直爽   Hello,大家好,我是 Connor,一个从无到有的技术小白.上一次我们说到了 pyquery 今天我们将迎来我们数据匹配部分的最后一位 ...

  5. Python 爬虫十六式 - 第七式:正则的艺术

    RE:用匹配来演绎编程的艺术 学习一时爽,一直学习一直爽   Hello,大家好,我是 Connor,一个个从无到有的技术小白.上一次我们说到了 pyquery 今天我们将迎来我们数据匹配部分的最后一 ...

  6. Python爬虫十六式 - 第四式: 使用Xpath提取网页内容

    Xpath:简单易用的网页内容提取工具 学习一时爽,一直学习一直爽 !   Hello,大家好,我是Connor,一个从无到有的技术小白.上一次我们说到了 requests 的使用方法.到上节课为止, ...

  7. Python爬虫(九)——京东比价定向爬虫

    文章目录 Python爬虫(九)--京东比价定向爬虫 判断可行性 查看链接 查看robots协议 程序的设计 步骤 方法 def getHTMLText(url) parsePage(ilt, htm ...

  8. 《OpenCv视觉之眼》Python图像处理十九:Opencv图像处理实战四之通过OpenCV进行人脸口罩模型训练并进行口罩检测

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  9. Python 爬虫十六式 - 第一式:HTTP协议

    HTTP:伟大而又无闻的协议 学习一时爽,一直学习一直爽!   Hello,大家好啊,我是Connor,一个从无到有的技术小白.有的人一说什么是HTTP协议就犯愁,写东西的时候也没想过什么是HTTP协 ...

  10. Python基础十九:多进程

    Python基础十九:多进程 Python基础系列内容为学习廖雪峰老师Python3教程的记录,廖雪峰老师官网地址:廖雪峰Python3教程 Author:yooongchun Email:yooon ...

最新文章

  1. python大牛 关东升_《Python从小白到大牛》第4章 Python语法基础
  2. html不间断滚动图片,Javascript实现图片不间断滚动的代码
  3. 浅析综合布线系统中检测双绞线的几种方式
  4. [转]对数据仓库进行数据建模
  5. Longest Palindrome CodeForces - 1304B(思维)
  6. 怎么修剪_杏树怎么育苗?怎么修剪怎么防治病虫害?
  7. java web怎么快速设计网页_Javaweb毕业设计快速开发指南(一)
  8. python比赛评分计算_python3:(可输入评委人数和参赛人数)模拟决赛现场最终成绩计算过程...
  9. python 图形库介绍_数据分析Python手绘图形库有哪些
  10. 抓linux肉鸡教程视频,抓肉鸡的教程和软件免费分享(2018一天抓1000只电脑肉鸡视频)...
  11. 计算机考研408真题和答案
  12. 华为 鸿蒙出处,华为商标名“鸿蒙”原来出自《山海经》,网友直呼:“太燃了”...
  13. 模拟与仿真两个词的区别
  14. 如何注册电子邮箱账号,教你创建email邮箱账号
  15. 12、Horizon 域控组策略管理
  16. EVE-NG中思科交换机配置实例之聚合和ssh远程登录
  17. 高仿富途牛牛-组件化-优秀的时钟
  18. 无穷微积分牵手“知识共享”,如虎添翼,所向无敌
  19. 【python机器学习基础教程】(四)
  20. 如何让自己的浏览器全屏?

热门文章

  1. IPguard文档控制策略
  2. 奥城大学计算机专业,美国研究生双录取的大学及可提供学位详情
  3. JAVA Swing添加表格
  4. 自用笔记傻妞返利配置
  5. 蓝桥杯练习题 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
  6. linux三种用户界面,Linux的图形用户界面-你会选择哪个?
  7. Android 中的 ClassLoader 摘抄笔记
  8. java 斑马 打印不出来_通过PrintServer将原始ZPL发送到Zebra打印机不起作用
  9. 单位自建网站服务器,企业自建网站的方式
  10. 建网站应该买什么云服务器,建网站应该买什么云服务器