用pymongo操作MongoDB
MongoDB是一个分布式存储的数据库,由C++语言编写的NoSQL库,数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定。
MongoDB的特点是用于海量数据存储,不需要固定模式、不需要多余操作就可以横向扩展,低成本,安装简单,支持多种编程语言等。
- MongoDB常用命令
# 常用数据库命令
db # 查看当前数据库
show dbs # 查看所有的数据库
use database_name # 切换或创建数据库
db.dropDatabase() # 删除数据库
# 常用集合命令
db.createCollection(name, options) # 创建集合,指定集合名称和参数
show tables # 查看集合
show collections
db.collection_name.drop() # 删除集合
# 常用数据操作命令
db.collection_name.insert(document) # 插入数据
db.collection_name.remove(search_expr, justOne) # 删除数据,justOne可以设为true或1,表示只删除一个文档,如果不设置该参数或默认使用false,则删除所有匹配条件的文档。
db.collection_name.update(search_expr, new_val, optios) # 修改数据,选项upsert默认为false表示无相应记录是否插入,选项multi默认为false表示是否作用于多条记录。
# 查找数据
db.collection_name.find() # 查找所有数据
db.collection_name.find({condition_doc}) # 查找到所有匹配数据
db.collection_name.find().limit(num) # 读取指定数量的文档
db.collection_name.find().sort({field:1,...}) # 对查询结果进行排序
db.collection_name.find({condition}).count() # 统计结果中的文档数
语法 | 操作 | 格式 |
---|---|---|
$eq | 等于 | {:} |
$lt | 小于 | {:{$lt:}} |
$lte | 小于等于 | {:{$lte:}} |
$gt | 大于 | {:{$gt:}} |
$gte | 大于等于 | {:{$gte:}} |
$ne | 不等于 | {:{$ne:}} |
$or | 或 | {:{$or:}} |
$in | 在范围内 | {:{$in:}} |
$nin | 不在范围内 | {:{$nin:}} |
-
使用python操作MongoDB
使用
pip install pymongo
安装pymongo模块。
import pymongo
# 无需权限认证
myclient = pymongo.MongoClient("mongodb://localhost:27017")
print(myclient.list_database_names()) # 获得所有的数据库名称
# 获取数据库和集合
db = myclient.test # 或者client['test']
collection = db.stu # 或者db['stu']
# 插入数据
stu1 = {'id': '001', 'name': '张三', 'age': 10}
res = collection.insert_one(stu1) # 插入一条数据
stu2 = {'id': '002', 'name': '李四', 'age': 11}
stu3 = {'id': '003', 'name': '王五', 'age': 12}
res = collection.insert_many([stu2, stu3]) # 插入多条数据
# 删除数据
collection.delete_one({'name': '张三'})
collection.delete_many({'age': {'$lt':11}})
# 修改数据
condition = {'name': '张三'}
res = collection.find_one(condition)
res['age'] = 22
res = collection.update_one(condition, {'$set':res}) # 修改一条记录
print(res.matched_count, res.modified_count) # 获得匹配的、影响的数据条数
# 查找数据
ret = collection.find_one({'name':'张三'})
print(ret)
rets = collection.find({'age': {'$gt': 10}})
for ret in rets:
print(ret)
results = collection.find().sort('age', pymongo.ASCENDING) # 按照年纪升序后输出
print([result['age'] for result in results])