mongoDB的安装及基本使用
1.mongoDB简介
1.1 NoSQL数据库
数据库:进行高效的、有规则的进行数据持久化存储的软件
NoSQL数据库:Not only sql,指代非关系型数据库
优点:高可扩展性、分布式计算、低成本、灵活架构、半结构化数据、简化关联关系
缺点:没有标准化、有限查询、不直观
常见NoSQL数据库
列存储:Hbase、Cassandra、Hypertable
文档存储:MongoDB、CouchDB
k-v存储:TokyoCabinet、BerkeleyDB、MemcacheDB、redis
对象存储:Neo4J、Versant
Xml数据库:BerkeleyDB、BaseX
注:黑色加粗的为常用的数据库
1.2.MongoDB概述
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
优点:
- C++编写的运行稳定性能高的数据
- 模式自由
- 面向集合
- 完整索引支持
- 复制和高可用性
1.3.Mongodb术语解释
- database--database:数据库
- table – collection:数据库表 – 集合
- row – document: 数据记录 – 文档
- column – field:数据字段 – 域
- index – index :索引 – 索引
- table-join – None:表连接~
- primary key – primary key :主键
1.4.MongoDB基本语法——数据类型
集合就是关系型书库中的表
文档对应关系型数据库中的行
文档:就是一个JSON对象,由KEY=VALUE键值对构成
{“name”:”admin”, “gender”:”男”}
集合:存储多个文档,结构不固定
{“name”:”admin”, “gender”:”男”}
{“name”:”manager”, “age”:23}
{“name”:”manager”, “phone”:”16868686868”}
数据库:存储多个集合
服务器:一个服务器中可以包含多个数据库
- ObjectID:文档id
- String:字符串
- Boolean:布尔值
- Integer:整数
- Double:浮点数
- Arrays:数组或者列表
- Object:嵌入的文档
- Null:空值
- Timestamp:时间戳
- Date:日期时间
2.Mongodb下载安装
- 官方网站
注意:偶数为稳定版,如1.6,奇数为开发版,如1.7
2.1.Windows下Mongodb安装
直接下载msi文件或者点击All Verison Binaries下载都行
我这里用的是zip安装,安装完毕后,
mongo文件夹中创建db文件夹和log文件夹
- 在cmd窗口输入命令启动数据库
mongod --dbpath D:\软件安装\MongoDB\data\db(此处是db的路径)
- 打开一个新的窗口输入命令mongo,用于数据库操作
2.2.Linux下Mongodb安装
MongoDB安装很简单,无需下载源文件,可以直接用apt-get命令进行安装。
1 . 打开终端,输入以下命令:
sudo apt-get install mongodb
2 . 安装完成后,在终端输入以下命令查看MongoDB版本:
mongo -version
3 . 启动mongo数据库
在终端输入命令
sudo mongo
3.安装pymongo
PyMongo是Mongodb的Python接口开发包,是使用python和Mongodb的推荐方式。
用Python操作MongoDB需要通过PyMongo,输入命令安装
pip install pymongo 默认安装 pip install pymongo==2.8 安装指定版本 pip install –upgrade pymongo 升级PyMongo
安装成功
命令运行成功无报错
4.Mongodb基本使用
4.1.基本操作
mongoDB将数据存储为一个文档
数据由 key=value 的键值对的形式组成
数据的操作:增删改查
nosql三元素:数据库 – 集合 – 文档 [--域]
4.2.基本语法
数据库操作
db:查看当前指向的数据库
show dbs:查看当前所有的数据库
use <数据库名称>:指向一个数据库
Use数据库不会创建数据库,如果操作数据会自动创建数据库db.dropDatabase():删除当前指向的数据库
集合操作
show collections:查看当前数据库所有集合
db.createCollection(<c_name> [, options]):创建一个集合
db.<集合名称>.drop():删除指定的集合
show collections 查看当前库中所有的集合,后面的collections不要加括号
db.createCollection(name, [optinos])
创建一个名称为name的集合,后面的options表示创建的附带选项
db.createCollection(“emp”):创建一个名称为emp的名称的集合
db.createCollection(“dept”, {“capped”: true, size: 5}):capped默认false
表示不设置上限,true表示设置上限需要设置size参数~表示达到上限时会将之前的数据覆盖
- 增加数据
语法:db.<集合名称>.insert(文档)
集合可以是原来存在的,可以是不存在的
文档:就是JSON格式表示的数据
简单查询:db.<集合名称>.find()查询指定集合的数据
db.student.insert({name:”jerry”, gender:”男”})
db.student.insert({_id:”1”, name:”tom”, gender:”女”, age:18})
- 更新数据
语法:db.<集合名称>.update(<query>, <update>,[multi:<boolean>])
指定属性更新:$opration
multi:默认false更新符合条件第一条,设置true全集合更新
#更新符合条件的文档
db.student.update({name:”tom”}, {name:”jerry”})
#更新符合条件的文档中符合条件的域
db.student.update({name:”tom”}, {$set:{name:”jerry”}})
#更新符合条件的多行文档及对应的域
db.student.update({}, {$set:{name:”donghua”}}, {multi:true})
保存数据
语法:db.<集合名称>.save(文档)
特征:[ _id ]如果数据不存在就添加,如果数据存在修改
删除数据
语法:db.<集合名称>.remove(<query>, {justone:<boolean>})
参数query:删除文档的条件
参数justOne:设置为true或者1,删除一条;默认false删除多条
查询数据
基本查询
find([{文档条件}]):全集合查询
findOne([{文档条件}]):查询第一个
pretty():将查询结果格式化展示
比较运算符
默认判断,无运算符
$lt:little~小于 <
$lte:little or equals~小于等于 <=
$gt:granter~大于 >
$gte:granter or equals~大于等于 >=
#查询名称为jerry的学生
db.student.find({name:”jerry”})
#查询年龄已经适婚年龄的学员
db.student.find({age:{$gte:20}})
- 逻辑运算符
逻辑与:并且运算,默认操作,无运算符
逻辑或:或者运算,$or
#查询年龄已经适婚年龄并且性别为女的学员
db.student.find({age:{$gte:20}, gender:”女”})
#查询年龄大于18或者性别为男的学员
db.student.find({$or:[{age:{$gt:18}, {gender:”女”}]})
- 范围运算符
$in:判断指定条件是否包含在某个范围内
$nin:判断指定条件是否不包含在某个范围内
#查询年龄在18或者20的学员
db.student.find({age: {$in:[18,20]}})
#查询年龄不是18 的学员
db.student.find({age: {$nin : [20]}})
- 限制查询条数
<find>.limit(count)
- 排序
<find>.sort({字段:1/-1, ...})
db.student.find().sort({name:1})
1.表示升序排列 -1表示降序排列,可以指定多个字段
- 统计
<find>.count()
db.<集合名称>.count({条件})
两种操作方式
1.查询结果,通过count()统计数据
2. 通过count()直接添加条件统计数据
- 去重
db.<集合名称>.distinct(“去重域名称”, {条件})
查询数据列表中,所有的年龄分布情况
db.student.distinct(“age”, {})
- 分页
#隔n个数据查询m个数据 db.hero.find().pretty().limit(m).skip(n)
5.Mongodb与python交互
之前学习了爬虫,现在我们把爬取得到的数据存储于Mongodb中
#爬取英雄联盟英雄信息详情,并存储
#-*- coding:utf-8 -*-
import pymongo
import requests
from bs4 import BeautifulSoup
#建立于MongoClient 的连接
client = pymongo.MongoClient('localhost',27017)
#得到数据库
hero = client['hero']
#得到一个数据集合
sheet_tab = hero['sheet_tab']
url = 'http://lol.duowan.com/hero/'
req = requests.get(url)
soup = BeautifulSoup(req.text,'html.parser')
links = soup.find(id="champion_list").find_all('a')
for link in links:
link = link['href']
requ = requests.get(link)
sop = BeautifulSoup(requ.text,'html.parser')
data = {
'title' : sop.find('h2',class_="hero-title").get_text(),
'name' : sop.find('h1',class_="hero-name").get_text(),
'tags' : sop.find('div',class_="hero-box ext-attr").find_all('span')[1].get_text(),
'story' : sop.find('div',class_="hero-popup").find_all('p')[0].get_text(),
}
sheet_tab.insert_one(data)
开启mongo,运行代码
通过Robo 3T可视化工具我们可以看到抓取到了137条数据,并且已存储到mongodb中
mongoDB的安装及基本使用的更多相关文章
- MongoDB下载安装与简单增删改查
Windows下MongoDB的安装和配置.启动和停止 下载地址:MongoDB的官方下载网址是:https://www.mongodb.org/downloads 安装步骤1. 点击下载的mongo ...
- MongoDB的安装与设置MongoDB服务
Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐.Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB ...
- Linux下MongoDB服务安装
Linux下MongoDB服务安装 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系数据库和非关系数据 ...
- MongoDB学习-安装流程
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型. ...
- mongodb(二) 安装和使用
mongodb的安装和使用 最近的项目需要使用到mongodb,从而开始熟悉nosql,有了本篇文章,记录和方便他人. mongodb的安装 下载地址:http://www.mongodb.org/d ...
- MongoDB的安装及配置
MongoDB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐. Windows (1). 登录Mongodb官网点击下载 (2). 将zi ...
- MongoDB的安装 转
第1章 MongoDB的安装 (黎明你好原创作品,转载请注明) 1.1 MongoDB简介 MongoDB是一个基于分布式文件存储的数据库开源项目.由C++语言编写,旨在为WEB应用提供可护展的高性能 ...
- MongoDB的安装,配置与开机自启动
关于简介不多说百度去吧少年.. MongoDB详细安装: 1.进入官网,点击DOWNLOAD MONGODB,下载所需要的版本.. 我这里把下载的文件放在d\MongoDB文件夹下,点击下载的官方镜像 ...
- MongoDB(二)——安装配置了解
前边介绍了MongoDB的大概理论知识,这篇来对MongoDB进行一下安装使用,支持安装在windows和linux上,当然了很多其它情况下我们是安装在linux上,由于毕竟server用linux的 ...
- MongoDB本地安装与启用(windows )
MongoDB的安装与MongoDB服务配置 Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐.Mongo DB很好的实现了 ...
随机推荐
- 猴子吃桃问题---C实现
原题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了了一个.第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每一天早上都吃前一天剩下桃子的一半零一个.到第十天早上想再吃时,发现 只剩下 ...
- 和菜鸟一起学linux总线驱动之i2c死锁问题
不知不觉中已经有好几个月没有写点东西了,懒了就是懒了,说是忙着想把产品做得更好,都是借口,每天花一点时间来写点东西确实很不错,自己也坚持了很久很久,只不过今年以来,发现提高不是很大,能写的东西好少好少 ...
- ubuntu12.04:jdk7:手动安装
总的原则:将jdk-7u10-linux-x64.tar.gz压缩包解压至/usr/lib/jdk,设置jdk环境变量并将其修改为系统默认的jdk 将jdk-7u5-linux-x64.tar.gz拷 ...
- 听晴明老师从头讲React Native 百度云下载 百度网盘
适用人群 能使用至少一门主流编程语言:有基本的面向对象的概念:最好有一些web相关的知识和概念. 课程概述 新颖.实用.详尽的ReactNative零基础课程,由国内权威的ReactNative中文网 ...
- OOP的基本原则
OOP的基本原则 点击打开链接
- 我对面向对象设计的理解——Java接口和Java抽象类
在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解. 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有 ...
- Day14 Javascript 点击添加出弹窗,取消隐藏弹窗小练习 反选,全选,取消边框
点击添加出弹窗,取消隐藏弹窗小练习 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta ...
- python---购物车---更新
购物车程序更新: 更新商家入口,实现以下功能: 1. 商家能够修改商品价格: 2. 商家能够下线商品: 3. 商家能够增加商品: 4. 商品信息存在文件中 # -*- coding:utf-8 -*- ...
- vue实现淘宝商品详情页属性选择功能
方法一是自己想出来的,方法二来自忘记哪里看到的了 不知道是不是你要的效果: 方法一:利用input[type="radio"] css代码: input { display: no ...
- Android 源码中的设计模式
最近看了一些android的源码,发现设计模式无处不在啊!感觉有点乱,于是决定要把设计模式好好梳理一下,于是有了这篇文章. 面向对象的六大原则 单一职责原则 所谓职责是指类变化的原因.如果一个类有多于 ...
