1、插入数据
import pymongo
from pymongo import MongoClient
#创建连接对象
client = pymongo.MongoClient(host='localhost', port=27017)
# client = MongoClient('mongodb://localhost:27017/')
#指定要操作的数据库
db = client.test
# db = client['test']
#指定要操作的集合
collection = db.students
# collection = db['students']
#新建数据
student = {
'id': '20170101',
'name': 'Jordan',
'age': 20,
'gender': 'male'
}
#直接调用insert()方法插入数据
result = collection.insert(student)
print(result)
#插入多条记录
student1 = {
'id': '20170101',
'name': 'Jordan',
'age': 20,
'gender': 'male'
}
student2 = {
'id': '20170202',
'name': 'Mike',
'age': 21,
'gender': 'male'
}
result = collection.insert([student1, student2])
print(result)
#推荐用insert_one()和insert_many()来分别插入单条记录和多条记录
student = {
'id': '20170101',
'name': 'Jordan',
'age': 20,
'gender': 'male'
}
result = collection.insert_one(student)
print(result)
print(result.inserted_id)
student1 = {
'id': '20170101',
'name': 'Jordan',
'age': 20,
'gender': 'male'
}
student2 = {
'id': '20170202',
'name': 'Mike',
'age': 21,
'gender': 'male'
}
result = collection.insert_many([student1, student2])
print(result)
print(result.inserted_ids)
2、查询数据
(1)find_one()查询得到的是单个结果
import pymongo
#创建连接对象
client = pymongo.MongoClient(host='localhost', port=27017)
#指定要操作的数据库
db = client.test
#指定要操作的集合
collection = db.students
result = collection.find_one({'name': 'Mike'})
print(type(result))
print(result)
运行结果
<class 'dict'>
{'_id': ObjectId('5cf3e3d57b5f42ebb9ba08cf'), 'id': '20170202', 'name': 'Mike', 'age': 21, 'gender': 'male'}
(2)find()则返回一个生成器
import pymongo
client = pymongo.MongoClient(host='localhost', port=27017)
db = client.test
collection = db.students
results = collection.find({'age': 20})
print(results)
for result in results:
print(result)
运行结果
<pymongo.cursor.Cursor object at 0x000002500EE9D320>
{'_id': ObjectId('5cf3e3d47b5f42ebb9ba08cd'), 'id': '20170101', 'name': 'Jordan', 'age': 20, 'gender': 'male'}
{'_id': ObjectId('5cf3e3d57b5f42ebb9ba08ce'), 'id': '20170101', 'name': 'Jordan', 'age': 20, 'gender': 'male'}
{'_id': ObjectId('5cf3e3d57b5f42ebb9ba08d0'), 'id': '20170101', 'name': 'Jordan', 'age': 20, 'gender': 'male'}
{'_id': ObjectId('5cf3e3d57b5f42ebb9ba08d1'), 'id': '20170101', 'name': 'Jordan', 'age': 20, 'gender': 'male'}
3、计数
import pymongo
client = pymongo.MongoClient(host='localhost', port=27017)
db = client.test
collection = db.students
count = collection.find().count()
print(count)
4、排序
排序时,直接调用sort()方法,并在其中传入排序的字段及升降序标志即可
这里调用pymongo.ASCENDING指定升序,如果要降序排列,可以传入pymongo.DESCENDING
import pymongo
client = pymongo.MongoClient(host='localhost', port=27017)
db = client.test
collection = db.students
results = collection.find().sort('name', pymongo.ASCENDING)
print([result['name'] for result in results])
5、偏移
在某些情况下,我们可能想只取某几个元素,这时可以利用skip()方法偏移几个位置,比如偏移2,就忽略前两个元素,得到第三个及以后的元素。
import pymongo
client = pymongo.MongoClient(host='localhost', port=27017)
db = client.test
collection = db.students
results = collection.find().sort('name', pymongo.ASCENDING).skip(2)
print([result['name'] for result in results])
limit()方法指定要取得结果个数。
import pymongo
client = pymongo.MongoClient(host='localhost', port=27017)
db = client.test
collection = db.students
results = collection.find().sort('name', pymongo.ASCENDING).skip(2).limit(2)
print([result['name'] for result in results])
6、更新
使用update()方法指定更新的条件和更新后的数据
from bson.objectid import ObjectId
import pymongo
client = pymongo.MongoClient(host='localhost', port=27017)
db = client.test
collection = db.students
condition = {'name': 'Kevin'}
student = collection.find_one(condition)
student['age'] = 25
result = collection.update(condition, student)
print(result)
7、删除
import pymongo
client = pymongo.MongoClient(host='localhost', port=27017)
db = client.test
collection = db.students
result = collection.remove({'name': 'Kevin'})
print(result)