尚拙

一个分享技术、学习成长的个人博客网站

0%

Python 操作 Mongodb 详解

最近使用python爬虫,使用的是mongodb,经常需要通过python代码操作mongodb,记录一下,方便以后查找。

一、准备工作

1、安装mongodb

下载地址:https://www.mongodb.com/download-center/community

安装过程就不写了,可以参考这个http://www.runoob.com/mongodb/mongodb-window-install.html

2、安装python中MongoDB的驱动程序

pip install pymongo

3、启动mongodb服务

二、连接Mongodb

import pymongo

conn = pymongo.MongoClient('localhost', 27017)

my_db = conn["test_db"]

my_collection = my_db["test_collection"]

1、连接MongoDB

conn = pymongo.MongoClient('localhost', 27017)

2、新建一个数据库,或者使用某个数据库

my_db = conn["test_db"]

3、新建一个集合,或者使用数据库中的某个集合

my_collection = my_db["test_collection"]

三、添加数据

插入一条数据

data1 = {
"name": “zhangsan”,
"age": 10,
}

my_collection.insert_one(data)

注:插入的数据必须是字典格式

插入多条数据

data1 = {
"name": “zhangsan”,
"age": 10,
}

data2 = {
"name": “lisi”,
"age": 24,
}

my_collection.insert_many([data1,date2])

四、查询数据

查询所有数据

例子:查询my_collection集合所有数据

result = my_collection.find()

注:查询结果为字典集合

查询一条数据

例子:查询my_collection集合中“name”为”zhangsan”的第一条数据

result = my_collection.find_one({'name': ‘zhangsan’})

注:查询结果为字典对象

查询多条数据

例子:查询my_collection集合中“age”为10的所有数据

result = my_collection.find({'age':10})

注: 查询结果为字典集合

条件查询

符号 含义 示例
$lt 小于 {‘age’: {‘$lt’: 20}}
$gt 大于 {‘age’: {‘$gt’: 20}}
$lte 小于等于 {‘age’: {‘$lte’: 20}}
$gte 大于等于 {‘age’: {‘$gte’: 20}}
$ne 不等于 {‘age’: {‘$ne’: 20}}
$in 在范围内
$nin 不在范围内

例子:查询my_collection集合中“age”大于10的所有数据

result = my_collection.find({'age': {'$gt': 10}})

注: 查询结果为字典集合

例子:查询my_collection集合中“age”为20或者35的所有数据

result = my_collection.find({"$or":[{"age":20},{"age":35}]})

例子:查询my_collection集合中“name”为”zhangsan”并且“age”为35的所有数据

result = my_collection.find({"$and":[{"name":"zhangsan"},{"age":35}]})

使用正则表达式查询

例子:查询my_collection集合中“name”中第一个字母为“z”的所有数据

myquery = { "name": { "$regex": "^z" } }
result = my_collection.find(myquery)

查询结果为字典集合

返回指定条数记录

如果我们要对查询结果设置指定条数的记录可以使用 limit() 方法,该方法只接受一个数字参数。

result = my_collection.find().limit(3)

五、修改数据

修改一条数据

例子:将my_collection集合中“name”为“zhangsan”的第一条数据的年龄修改为50

myquery = { "name": "zhangsan" }
newvalues = { "$set": { "age": 50 } }
my_collection.update_one(myquery, newvalues)

修改多条数据

例子:将my_collection集合中“name”为“lisi”的所有数据的年龄修改为50

myquery = { "name": "lisi" }
newvalues = { "$set": { "age": 50 } }
my_collection.update_many(myquery, newvalues)

六、删除数据

删除一条数据

例子:删除集合中”name”为“lisi”的第一条数据

myquery = { "name": "lisi" }
my_collection.delete_one(myquery)

删除多条数据

例子:删除集合中”age”为10的所有数据

myquery = { "age": 10 }
my_collection.delete_many(myquery)

删除所有数据

例子:删除集合中所有数据

my_collection.delete_many({}) 

或者

my_collection.remove() 

删除集合

mycol.drop()

mycol.drop()

七、数据排序

sort() 方法可以指定升序或降序排序。

sort() 方法第一个参数为要排序的字段,第二个字段指定排序规则,1 为升序,-1 为降序,默认为升序。

例子:将my_collection集合中的数据安装年龄升序排序

result = my_collection.find().sort("age",-1)

八、其他

跳过指定数量的数据

例子:跳过10条数据后,取10条数据

result = my_collection.find().skip(10).limit(10)

注:常用作分页