MongoDB简介

MongoDB是一个开源的文档类型数据库,它具有高性能,高可用,可自动收缩的特性。MongoDB能够避免传统的ORM映射从而有助于开发。

文档

在MongoDB中,一行纪录就是一个文档,它是一个由键值对构成的数据结构,MongoDB文档与JSON对象类似。键的值可以包含其他的文档,数组,文档数组。

{
"_id" : ObjectId("5a55c9857c1ccc05bc71e9b0"),
"aid" : 2,
"view" : "--",
"danmaku" : 3564,
"reply" : 3564,
"favorite" : 2763,
"coin" : 924,
"share" : 1511,
"now_rank" : 0,
"his_rank" : 0,
"no_reprint" : 0,
"copyright" : 2
}

集合

MongoDB在集合中存储文档。集合类似于关系数据库中的表。然而,与表不同的是集合不要求它里面的文档具有相同的结构。

在MongoDB中,存储在集合中的文档必然有一个唯一的_id字段作为主键。

MongoDB安装

MongoDB2.2版本之前不支持Windows XP,本教程使用的版本是最新的3.4的版本。为了方便操作和理解,所以选择在Windows讲解,生产环境请使用Linux版本。

设置MongoDB环境

MongoDB需要一个目录来保存数据,默认的数据目录是\data\db。在我的机器上使用下面的目录作为数据目录。

D:\data

你可以在启动MongoDB的时候为它指定一个数据目录。例如我们用如下命令启动MongoDB:

D:\MongoDB\bin\mongod.exe --dbpath D:\data

连接MongoDB

使用mongo.exe命令连接。打开另一个命令行窗口,输入如下命令:

'D:\MongoDb\bin\mongo.exe'

行些命令后,就能连接上MongoDB服务。由于没有配置任何其他端口,也没有配置权限认证,所以一切都是默认的本地连接,相当简单。连接成功后,可以执行help命令,看看有什么内容。

安装MongoDB服务

在没有安装服务之前,每次使用都需要先手动打开mongodb服务,才能连接。我们可以直接把MongoDB的服务安装到计算机,启动之后就不用每次手动打开服务了。

过执行mongod.exe,使用--install选项来安装服务,使用--config选项来指定之前创建的配置文件。

"D:\MongoDB\bin\mongod.exe" --config "D:\MongoDB\mongod.cfg" --install

安装完成之后通过net start MongoDB,启动服务

net stop MongoDB 关闭服务

创建数据库

语法

use DATABASE_NAME

切换到指定数据库,如果不存在,就创建数据库。

查看所有的数据库

show databases databases可以简写成dbs

删除数据库

语法

db.dropDatabase()

删除集合

db.collection.drop()

总结常用的操作符

1.比较操作符

$eq 匹配等于(=)指定值的文档

> db.test.find({'students':{$eq:55}})

返回students等于55 的文档。

\(gt 匹配大于(>)指定值的文档
\)gte 匹配大于等于指定值的文档

\(lt 匹配小于指定值的文档
\)lte 小于等于

\(ne 不等于
\)in 匹配数组中的任意值

> db.test.find({'students':{$in:[55,54,56]}})

$nin 不匹配数组中的值

2.逻辑操作符

$or 或条件查询

查询students大于等于55或者title等于python_mongodb教学的文档
> db.test.find({$or:[{'students':{$gte:55}},{'title':'python_MongoDB教学'}]})

\(and 与条件查询
\)not 查询和表达式不匹配的文档

$nor 查询与任一表达式都不匹配的文档

> db.test.find({$nor:[{'students':{$gte:57}},{'title':'python_MongoDB教学'}]})

更新操作符

$inc 将文档中的某个field对应的value自增/减某个数字amount

> db.test.update({'class':'爬虫2班'},{$inc:{'students':1}}))

\(mul 将文档中的某个field对应的value做乘法操作,同上。
\)rename 重名名文档中指定的字段名字

$set 更新文档中的某一个字段,而不是全部替换

> db.test.update({'students':116},{$set:{'students':56}})

插入数据

在MongoDB中,可以使用insert()方法和save方法插入一个文档到MongoDB集合中,如果此集合不存在,MongoDB会自动为你创建。

先用命令行连接到MongoDB,再进入tz_mongo数据库。

use tz_mongo

然后插入一个文档到test集合,如果test集合不存在,这个操作会自己创建test集合。

例如:

> db.test.insert({'class':'爬虫1班','students':50})
> db.test.save({'class':'爬虫1班','students':50})
> db.test.find()
{ "_id" : ObjectId("5a586e8522dbc47846dd8e1f"), "class" : "爬虫1班", "students" : 50 }
{ "_id" : ObjectId("5a586eae22dbc47846dd8e20"), "class" : "爬虫1班", "students" : 50 }

在插入的文档中,如果不指定_id参数,那么 MongoDB 会为此文档分配一个唯一的ObjectId。

_id为集合中的每个文档唯一的12个字节的十六进制数。

修改数据

MongoDB 使用 update() 和 save() 方法来更新集合中的文档。接下来让我们详细来看下两个函数的应用及其区别。

update() 方法。

update方法

update方法用于更新已经存在的文档。

我们先在test里面插入条数据,然后再进行修改。
> db.test.insert({'title':'MongoDB教学'})
WriteResult({ "nInserted" : 1 })
> db.test.update({'title':'MongoDB教学'},{$set:{'title':'tz_MongoDB教学'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

然后再查看数据发现数据已经被修改。

这里set的作用是指更新文档当中的某一个字段,如果不使用set,文档会被直接替换。

update方法默认只更新一个文档.如果需要更新多个文档,需要指定multi参数

save方法

save() 方法通过传入的文档来替换已有文档。

> db.test.save({'_id':ObjectId("5a586e8522dbc47846dd8e1f"),'class':'爬虫1班','students':56})

查询数据

mongo查询数据使用的主要方法就是find。find方法以分结构化的方式来显示所有文档。

find方法可以传入查询条件来进行数据查询。也可以不传。

> db.test.find()
默认返回20条数据
> db.test.findOne()
返回一条数据
> db.test.find().limit(num)
返回num条数据,不超过20条
> db.test.find({'class':'爬虫1班'})
通过给定的字段查询
> db.test.find({'students':{$gte:58}})
查询students大于等于58的数据
> db.test.find({$or:[{'students':58},{'students':55}]})
or操作符

删除数据

使用remove()方法从集合中删除文档。这个方法需要一个条件文档用来决定哪些文档将被删除。

> db.test.remove({'class':'爬虫1班'})
删除指定条件匹配的所有文件。
> db.test.remove({'class':'爬虫1班'},{justOne:true})
删除匹配条件的一条数据
> db.test.remove({})
删除当前文档
> db.test.drop()
删除集合

删除操作也会返回一个WriteResult对象,他包含了操作的状态信息,nremoved字段值,表示被删除的字段数量。

pymongo的基本操作和使用的更多相关文章

  1. pyMongo 一些基本操作

    1. find() 函数, 可以在函数体内直接指定 filter, sort, projection(限制field), 语法如下: datas = col.find( filter = {" ...

  2. pymongo的基本操作和使用--练习

    1.将MongoDB注册到电脑中 安装好MongoDB之后,如何使用MongoDB呢?来到安装目录D:/MongoDB/bin会有如下列表: 其中,mongod.exe是服务端,mongo.exe是客 ...

  3. MongoDB --- 02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

    一.基本操作 . mongod 启动服务端 2. mongo 启动客户端 3. show databses 查看本地磁盘的数据库 4. use 库名 切换到要使用的数据库 5. db 查看当前使用的数 ...

  4. python使用pymongo访问MongoDB的基本操作,以及CSV文件导出

    1. 环境. Python:3.6.1 Python IDE:pycharm 系统:win7 2. 简单示例 import pymongo # mongodb服务的地址和端口号mongo_url = ...

  5. 【网络爬虫入门05】分布式文件存储数据库MongoDB的基本操作与爬虫应用

    [网络爬虫入门05]分布式文件存储数据库MongoDB的基本操作与爬虫应用 广东职业技术学院  欧浩源 1.引言 网络爬虫往往需要将大量的数据存储到数据库中,常用的有MySQL.MongoDB和Red ...

  6. pymongo的使用

    利用python操作mongodb需要导入pymongo库   pip install pymongo 1.连接mongodb     import pymongo     client = pymo ...

  7. Python 驱动 MongoDB 示例(PyMongo)

    Python 的MongoDB驱动 pymongo ,使用pip Install pymongo安装即可 最近发现网上的很多实例已经过时了,在此自我探究记录下来. 编写一个接口类来支持MongoDB的 ...

  8. 孤荷凌寒自学python第六十六天学习mongoDB的基本操作并进行简单封装5

    孤荷凌寒自学python第六十六天学习mongoDB的基本操作并进行简单封装5并学习权限设置 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十二天. 今天继续学习mongo ...

  9. 孤荷凌寒自学python第六十五天学习mongoDB的基本操作并进行简单封装4

    孤荷凌寒自学python第六十五天学习mongoDB的基本操作并进行简单封装4 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十一天. 今天继续学习mongoDB的简单操作 ...

随机推荐

  1. ubuntu 制作本地yum仓库

    ubuntu 制作本地yum仓库 笔者: 张首富 W X: y18163201(请备注) qq群:895291458 时间:2019-01-31晚 今天到某银行进行软件部署的时候,碰到所有电脑都不允许 ...

  2. zabbix导入数据库报错1046 (3D000) : No database selected

    Zabbix导入数据库时报错 使用如下命令导入Zabbix数据库时报错 zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -u ...

  3. 虚拟机linux centos7 查找ip不到的设置

    1.centos7 系统后查找ip信息,不用ifconfig -a 命令,开始使用ip Addr命令 输入ip Addr 命令后,并没有看到实际的ip地址,记住上述图片中红色标记的ens32 这个就是 ...

  4. 在虚拟机上的关于Apache(阿帕奇)(4)基于域名访问网站

    这篇随笔是基于域名访问网站,和前后两篇文章基于ip和基于端口一起练习效果更好 首先配置网卡Ip地址与hosts文件 输入命令:  vi  /etc/hosts/ (每行只能写一条,格式为IP地址+空格 ...

  5. [2018-07-19] 安装python

    1.Python官网 https://www.python.org/downloads/ 2.应该使用Python2.x还是Python3.x? Python有2.x和3.x两个版本,这两个版本是不兼 ...

  6. Java抽象类、接口、内部类

    抽象类的概念: 1.Java中可以定义没有方法体的方法,还方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类: 2.如,shape类计算周长和面积的方法无法确定,那么就可以将这样 ...

  7. Pandas 分组聚合

    # 导入相关库 import numpy as np import pandas as pd 创建数据 index = pd.Index(data=["Tom", "Bo ...

  8. 【实用工具】这些你不得不知道的chrome插件,让你事半功倍

    平时chrome插件用多了,发现在工作中有很多插件特别好用,让你事半功倍.于是我抽时间整理了一些非常好用的chrome插件分享给大家,其中有些插件是我已经离不开,每天都在用的.希望这篇文章能帮助你找到 ...

  9. .Net Core Vue Qucik Start

    .Net Core Vue Qucik Start This is a ASP.NET Core 3.0 project seamlessly integrationed with Vue.js te ...

  10. Hibernate中关于Query返回查询结果是类名的问题

    query.list返回的是一个装有类的信息的集合,而不装有数据库信息的集合.如下图 运行结果为:   因为得到的集合是类,所以要将list泛型设为那个类,并且将得到的集合进行.get(x).getx ...