前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MongoDB数据库(一)

MongoDB数据库(一)

作者头像
不断折腾
发布2019-09-23 11:10:53
1.1K0
发布2019-09-23 11:10:53
举报
前言:Mongodb数据库是一种非关系型数据库,之前我们学习的mysql是一种关系型数据库。

在爬虫中我们会时常用到mongoDB数据库。mongoDB的优点在于易扩展,高性能,灵活的数据了类型。

安装

安装步骤很简单,就不多说了。

这里推介文章:www.cnblogs.com/tim100/p/6721415.html

mongodb的基础命令

# 查看数据库

show dbs

或者

show databases

# 进入一个数据库 use关键字

例如:use admin

# 查看当前所在数据库

db

# 删除一个数据库

db.dropDatabase()

db代表当前数据库

# 如何创建一个数据库

use test1

就会创建一个test1数据库,当不存在创建,存在就进入数据库。

并且当我们test1中存在数据的时候,show dbs才会显示出这个数据库

mongodb中的数据类型

Object ID:文档ID

String:字符串

Boolean:布尔值,true,false

Integer:整数

Double:浮点值

Arrays:数组或者列表,多个值存储到一个键下

Object:文档

Null:Null值

Timestamp:时间戳

Date:时间

增删改查

在mongodb中是不存在表的概念的,而是把数据存放到集合中。

# 创建一个student数据库,并向stuinfo集合中插入一条数据

use student

db.stuinfo.insert({name:'张三',age:25})

# 查看集合中的数据

db.stuinfo.find()

会输出:

{ "_id" : ObjectId("5c3079c952f446d98cc93ca4"), "name" : "张三", "age" : 25 }

这里的_id和关系型数据库中的主键一样,保证数据的唯一性,是一个16进制

不写_id会自动生成一个,写了就不会。#

# 保存,这里的保存是当不存在_id会创建,存在则会修改

# 当我们执行

db.stuinfo.save({_id:101,name:'小花',age:40})

的时候,_id在上面不存在就会添加上去

# 当我们想修改的时候

db.stuinfo.insert({_id:100,name:'李四',age:111})

即可。而当用insert的时候,_id存在就会报错

更新数据

# 将符合条件的数据更新

db.stuinfo.update({name:'张三'},{name:'小张',sex:'男'})

# 会将name等于张三的一整行数据更新成我们后面填写的数据

# 我们只想更新name需要这样写

db.stuinfo.update({name:'张三'},{$set:{name:'小张'})

修改指定数据需要使用$set来操作。

# 多行修改,上面的修改无论张三有几个,都会只修改一条

# 想修改多条,需要添加一个参数

db.stuinfo.update({name:'张三'},{name:'小张',sex:'男'},{multi:true})

即可,当然我们这里没有多条数据,你可以多添加几条试试。

删除

db.stuinfo.remove({name:'李四'})

# 默认会删除多行

# 只删除一行

db.stuinfo.remove({name:'李四'},{justOne:true})

查询

首先创建一个数据,添加如下数据

use stu

db.stu.insert({name:'小花',sex:'男',age:18,address:'武汉'})

db.stu.insert({name:'小王',sex:'女',age:20,address:'广州'})

db.stu.insert({name:'小赵',sex:'女',age:25,address:'上海'})

db.stu.insert({name:'小陈',sex:'男',age:10,address:'北京'})

db.stu.insert({name:'小杜',sex:'男',age:30,address:'南京'})

db.stu.insert({name:'小二',sex:'女',age:23,address:'深圳'})

# 查询性别为男的

db.stu.find({sex:'男'})

# 改变格式输出

db.stu.find({sex:'男'}).pretty()

# 查询性别为男的只显示一个

db.stu.findOne({sex:'男'})

# 查询年龄为20的

db.stu.find({age:20})

# 比较运算符

小于:$lt

# 查询年龄大于20的

db.stu.find({age:{$lt:20}})

小于等于:$lte

# 查询年龄大于等于20的

db.stu.find({age:{$lte:20}})

大于:$gt

# 查询年龄大于25的

db.stu.find({age:{$gt:25}})

大于等于:$gte

# 查询年龄大于等于25的

db.stu.find({age:{$gte:25}})

不等于:¥ne

# 查询年龄不等于25的

db.stu.find({age:{$ne:25}})

范围运算符

# 查询年龄为18和25的人

db.stu.find({age:{$in:[18,25]}})

# 查询年龄不为18和25的人

db.stu.find({age:{$nin:[18,25]}})

# 多条件查询,年龄为18,并且是在武汉的

db.stu.find({age:18,address:'武汉'})

# 查询年龄为18,或地点在上海的

db.stu.find({$or:[{age:18},{address:'上海'}]})

# 正则表达式查询

# 查询以姓名以小开头的人

db.stu.find({name:/^小/})

或者

db.stu.find({name:{$regex:'^小'}})

# 查询前两行数据

db.stu.find().limit(2)

# 跳过前两行数据

db.stu.find().skip(2)

# 跳过前两行显示两行

db.stu.find().skip(2).limit(2)

# limit和skip组合可以达到分页的效果

# 自定义查询

# 查询年龄等于18的:

db.stu.find({$where:funtion(){return this.age==18}})

# 写法和我们jquery中是一样的。

# 查询年龄为18的name值

db.stu.find({age:18},{name:1})

# 上面还是会显示_id,我们修改成

db.stu.find({age:18},{name:1,_id:0})

# 注意,不想显示_id写成_id:0

# 其他不想显示就不写name:1或age:1,其他字段写成name:0会报错

排序

# 以年龄升序排序

db.stu.find().sort({age:1})

# 以年龄降序排序

db.stu.find().sort({age:-1})

# 多字段排序直接逗号隔开添加就好

# 所有数据只显示name值

db.stu.find({},{name:1,_id:0})

# 查询一共多少行数据

db.stu.find().count()

或者

db.stu.count()

# 查询年龄大于20的有多少数据

db.stu.find({age:{$gt:20}}).count()

或者

db.stu.count({age:{$gt:20})

去重复

# 去除name重复的

db.stu.distinct('name')

# 在年龄大于20的人中去除name重复的

db.stu.distinct('name',{age:{$gt:20}})

数据备份和恢复

这个密令直接在(终端)cmd中输入

备份

mongodump -h 服务器地址 -d 数据库名字 -o 存放的位置

# 在本地就值接不加-h就好了

恢复

mongorestore -h 服务器地址 -d 需要回复的数据库名字 --dir 备份数据库的位置

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python入门到放弃 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档