python操作MongoDB

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值