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. Computer English Notes

    Chapter 1 : About Computer Answer the following - Abbreviation LBS - Location-Based Services HTML - ...

  2. Java 读取properties 配置文件的几种方式

    基于ClassLoder读取配置文件 Properties properties = new Properties(); // 使用ClassLoader加载properties配置文件生成对应的输入 ...

  3. 【Linux】【自学笔记】Linux下面docker安装mysql

    写在前面: 捣腾继续,之前把一个SpringBoot的程序安装在docker上面,参考链接:https://www.cnblogs.com/aki-stones/p/2019-11-01-note.h ...

  4. 第四十章 POSIX条件变量

    条件变量 当一个线程互斥地访问某个变量时,它可能发现在其它线程改变状态之前,它什么也做不了 例如一个线程访问队列时,发现队列为空,它只能等待,只到其它线程将一个节点添加到队列中.这种情况就需要用到条件 ...

  5. SCOI2005 繁忙的都市 [Luogu P2330]

    题目描述 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条 ...

  6. Java 干货之深入理解Java内部类

    可以将一个类定义在另一个类或方法中,这样的类叫做内部类 --<Thinking in Java> 说起内部类,大家并不陌生,并且会经常在实例化容器的时候使用到它.但是内部类的具体细节语法, ...

  7. 使用Typescript重构axios(三)——实现基础功能:处理get请求url参数

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  8. web应用安全框架选型:Spring Security与Apache Shiro

    一. SpringSecurity 框架简介 官网:https://projects.spring.io/spring-security/ 源代码: https://github.com/spring ...

  9. 【转载】常见十大经典排序算法及C语言实现【附动图图解】

    原文链接:https://www.cnblogs.com/onepixel/p/7674659.html 注意: 原文中的算法实现都是基于JS,本文全部修改为C实现,并且统一排序接口,另外增加了一些描 ...

  10. 公众号第三方平台开发 component_verify_ticket和accessToken的获取

    公众号第三方平台审核通过之后,微信的服务器会定时(10分钟一次)给"授权事件接收URL"发送component_verify_ticket,这里我们需要及时更新component_ ...