pymongo的基本操作和使用

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字段值,表示被删除的字段数量。

转载于:https://www.cnblogs.com/pythoner6833/p/8988996.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值