1.连接数据库
import pymongo
client = pymongo.MongoClient(host='localhost',port=27017) # client = pymongo.MongoClient('mongodb://loaclhost:27017/')
2.指定数据库
db=client.test # db=client['test']
3.指定集合
collection = db.students # collection = db['students']
4.插入数据
student = {
'id':'20170303',
'name':'Bob',
'age':25,
'gender':'male'
}
result = collection.insert(student)
print(result) #返回_id值
插入多条数据
student1 = {
'id':'20170606',
'name':'Bob',
'age':20,
'gender':'male'
}
student2 = {
'id':'20170707',
'name':'Mike',
'age':25,
'gender':'male'
}
result = collection.insert([student1,student2])
print(result) #返回数据库id值
目前官方推荐使用
result = collection.insert_one(student) 插入单条记录
result = collection.insert_many([student1,student2]) 插入多条记录
print(result.inserted_id) 返回数据库id值
5.查询
插入数据后我们可以利用 find_one() 或 find() 方法进行查询,find_one() 查询得到是单个结果,find() 则返回一个生成器对象。
result = collection.find_one({'name': 'Mike'})
print(result)
对于多条数据的查询,我们可以使用 find() 方法,例如在这里查找年龄为 20 的数据
results = collection.find({'age': 20})
print(results)
for result in results:
print(result)
查询大于20岁的
results = collection.find({'age': {'$gt': 20}})
![](https://img2018.cnblogs.com/blog/1622496/201905/1622496-20190521132657819-1058886419.png)
results = collection.find({'name': {'$regex': '^M.*'}}) #正则匹配
![](https://img2018.cnblogs.com/blog/1622496/201905/1622496-20190521132831716-368484556.png)
7.计数
要统计查询结果有多少条数据,可以调用 count() 方法,如统计所有数据条数:
count = collection.find().count()
print(count)
或者统计符合某个条件的数据:
count = collection.find({'age': 20}).count()
print(count)
8.排序
9.偏移
10.更新
方法一:
condition = {'name': 'Kevin'} #条件
student = collection.find_one(condition) #查询
student['age'] = 25 #修改
result = collection.update(condition, student) #写入 #建议用 result = collection.update(condition, {'$set': student})
print(result)
另外 update() 方法其实也是官方不推荐使用的方法,在这里也分了 update_one() 方法和 update_many() 方法,用法更加严格,第二个参数需要使用 $ 类型操作符作为字典的键名
方法二:
condition = {'name': 'Kevin'}
student = collection.find_one(condition)
student['age'] = 26
result = collection.update_one(condition, {'$set': student})
print(result)
print(result.matched_count, result.modified_count) #然后调用 matched_count 和 modified_count 属性分别可以获得匹配的数据条数和影响的数据条数。
10.删除
result = collection.remove({'name': 'Kevin'})
print(result)
另外依然存在两个新的推荐方法,delete_one() 和 delete_many() 方法
result = collection.delete_one({'name': 'Kevin'})
print(result)
print(result.deleted_count)
result = collection.delete_many({'age': {'$lt': 25}})
print(result.deleted_count)