MongoDB的操作
1.连接MongoDB
Python 想要连接MongoDB需要安装pymongo,emm,安装方法可以在cmd下,pip安装(
pip install pymongo
)
安装完了后你就可以用一下代码连接MongoDB
1 | import pymongo |
2.MongoDB数据库,数据的插入
插入数据,注意是已字典的形式。比如插入以下数据
1 | student={ |
如下图
最新官方推荐
insert_one()
插入一条数据,返回的不同,是InsertOneResult对象
在MongoDB中都有一个_id属性来唯一标识,如果没有就会自动产生一个ObjectId类型的_id属性,返回_id值
当然也可以一次性插入多条数据 最新官方推荐insert_many()
来插入多条数据,或者依旧用insert
,collection.insert([student1,student2])
,注意是列表形式。
3.MongoDB数据库的查询
我们可以用
find_one()
或者find()
方法来进行查询,find()返回一个生成器对象
1 | result = collection.find_one({'name':'Mike'}) |
返回的是
字典类型
查询不存在时,则会返回none
记住哦: 是字典类型
比如你想查询age等于20的若干数据,你会用什么呢
1 | results = collection.find({'age':20}) |
查询大于20呢
1 | results = collection.find({'age':{'$gt': 20}}) |
这里查询的条件键值已经不是单纯的数字,而是一个字典,比较符号
$gt
大于
下面是这些比较符号的总结
符号 | 含 义 | 实 例 |
---|---|---|
$gt | 大于 | {‘age’:{‘$gt’:20}} |
$lt | 小于 | {‘age’:{‘$lt’:20}} |
$gte | >= | {‘age’:{‘$gte’:20}} |
$lte | <= | {‘age’:{‘$lte’:20}} |
$ne | != | {‘age’:{‘$ne’:20}} |
$in | 在范围内 | {‘age’:{‘$in’:[20,23]}} |
$nin | 不在范围内 | {‘age’:{‘$nin’:[20,23]}} |
还支持正则表达式,如查询以’M’开头名字的数据
1 | results = collection.find({'name':{'$regex':'^M.*'}}) |
还有简单的功能符号
1 | $exists 属性是否存在 {'name':{'$exists':True}} name属性存在 |
4.计数
要统计查询结果有多少条数据,可以用
count()
方法,比如统计有多少数据1
count = collection.find().count()
或者统计符合某种条件的数据数,例如统计名字以a开头的
1
count = collection.find({'name':{'$regex':'^a.*'}}).count()
5.排序
排序,直接调用
sort()
方法,并在其中传入排序的字段以及升降标志pymongo.ASCENDING
升序pymongo.DESCENDING
降序
1 | results = collection.find().sort('name',pymongo.ASCENDING) |
6.偏移
在某些情况,我们只需要提取其中的几个元素,我就可以调用
skip()
方法,示例如下:
1 | results = collection.find().sort('name',pymongo.DESCENDING).skip(2) |
这样我们就可以跳过前两个
另外,我们还可以用limit()
方法来指定要去的个数,只取两个数据
1 | results = collection.find({'age':{'$gt':20}}).sort('name',pymongo.ASCENDING).skip(2).limit(2) |
7.数据的更新
对于数据的更新,我们可以用
upodate()
方法
1 | condition={'name':'Mike'} |
官方推荐
update_one()
但是如果使用update_one()
方法,第二个参数就不能传入字典,应该用$
类型操作符作为字典的键名,示例如下:
1 | result = collection.update_one(condition,{'$set':student}) |
8.数据的删除
删除的话,可以直接用
remove()
方法,符合条件的数据全部删除
这里依然推荐两个官方推荐方法delete_one()
和elete_many()
1 | results = collection.delete_many({'age':{'$gt':20}}) |
此时也只有一条数据