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. UnityWebRequest_ZT

    using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using U ...

  2. Texture to texture2D以及texture2D像素反转

    private void SaveRenderTextureToPNG(Texture inputTex, string file) { RenderTexture temp = RenderText ...

  3. axio安装及使用

    先安装 npm install axios --save 再导入 import $ from "jquery"; import axios from "axios&quo ...

  4. (Java) AES-128 数据加密

    package com.vcgeek.hephaestus.utils; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeyS ...

  5. null与undefined的区别?

    古之立大事者,不惟有超世之才,亦必有坚忍不拔之志. ——北宋· 苏 轼<晁错论> 1.首先看一个判断题:null和undefined 是否相等     console.log(null== ...

  6. 前端与算法 leetcode 26. 删除排序数组中的重复项

    目录 # 前端与算法 leetcode 26. 删除排序数组中的重复项 题目描述 概要 提示 解析 算法 # 前端与算法 leetcode 26. 删除排序数组中的重复项 题目描述 26. 删除排序数 ...

  7. MVC5用户控件

    1. 添加一个model,用于给用户控件传递数据: 2.添加一个部分视图 . 3. 部分视图中,引入model,用于传递数据 4. 在要插入用户控件的地方,这样写 @Html.Partial(&quo ...

  8. CSPS模拟 94

    以后干脆不要在准备提交的代码里放调试信息. 再也不忘删printf可是memset还是看不见... T1 玄学错误,不想研究.skyh帮我研究出来了.HACKDATA:1 1 T2 傻逼做法. 发现一 ...

  9. CSPS模拟 52

    我貌似曾经说过我是个只会做水题的巨型辣鸡.. 这次证明我水题都不会做.. T1 平均数 区间数$n^2$ 枚举是不可能了 可是好像没有无用的计算量.. 刚想到这里,此时开考15min 看见天皇比手势说 ...

  10. 7.30 NOIP模拟10

    T1.辣鸡 考试的时候竟然被我以“麻烦”弃掉了,赛后发现这题好水啊,直接sort一下寻找四周即可. T2.模板 考试时期望得分70,实际得分5 首先看到这种题基本就是线段树,我们以时间为下标,对每一个 ...