Mongodb的安装及使用(一)

Mongodb的安装及使用(一)
Mongodb 与 python 的交互(二)
mongodb数据库备份和恢复(三)

1.Mongodb下载安装

官方网站
注意:偶数为稳定版,如1.6,奇数为开发版,如1.7

1.1Windows下Mongodb安装

直接下载msi文件或者点击All Verison Binaries下载都行

这里用的是zip安装,安装完毕后

mongo文件夹中创建db文件夹和log文件夹

先进入mongodb安装的位置,在此处打开cmd窗口输入命令启动数据库

mongod --dbpath D:\软件安装\MongoDB\data\db(此处是db的路径)

打开一个新的窗口输入命令mongo,用于数据库操作

1.2.ubuntu上安装Mongodb

1.打开终端输入一下命令:
sudo apt-get install mongodb
2.查看版本:
mongo -version
3.启动数据库
sudo mongo

1.3.安装pymongo

PyMongo是Mongodb的Python接口开发包,是使用python和Mongodb的推荐方式。

用Python操作MongoDB需要通过PyMongo,输入命令安装

pip install pymongo          默认安装
pip install pymongo==2.8      安装指定版本
pip install –upgrade pymongo   升级PyMongo

2.Mongodb简介

什么是NoSQL数据库

·数据库:进行高效的、有规则的进行数据持久化存储的软件
·NoSQL:指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
·NoSQL数据库:Notonly sql,指代非关系型数据库
·优点:高可扩展性、分布式计算、低成本、灵活架构、半结构化数据库、简化关联关系
·缺点:没有标准化、有限查询、不直观

常见NoSQL数据库

·列储存:Hbase、Cassandra、Hypertable
·文档存储:MongoDB、CouchDB
·K-V存储:TokyCabinet、BerkeleyDB、MencacheDB、redis
·对象存储:Neo4j、Versant
·Xml数据库:BerkeleyDB、Basex

3、MongoDB概述

·MongoDB 是一个机遇分布式文件存储的NoSQL数据库
·C++编写的运行稳定性能高得数据库
模式自由
面向集合
完整索引支持
复制和高可用性
more...

3.1Mongodb术语解释

·database-database:数据库
·table-collection:数据库表-集合
·row-document:数据记录-文档
·column-field:数据字段-域
·index-index:索引-索引
·table-join-None:表连接
·primary key-primary key:主键

3.2MongoDB基本语法——数据类型

Paste_Image.png

·集合就是关系型书库中的表

·文档对应关系型数据库中的行

·文档:就是一个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:日期时间

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

推荐阅读更多精彩内容