python操作mongodb

pymongo连接mongodb

进入数据库
import pymongo
from pymongo import MongoClient
#连接mongodb
mongo_conn = MongoClient('0.0.0.0', 27017)
#没有mydb数据库就创建,有就进入
db = mongo_conn.mydb
集合类似sql里面的表
所有集合名
print(db.list_collection_names())
创建集合
#没有mytable就创建,有就进入
myset= db.myset
删除集合
myset.drop()
插入数据
#插入一条
data={'name':'张三','age':20}
myset.insert_one(data)

#插入多条
data=[{'name':'张三','age':20},
      {'name':'李四','age':20,'gender':'男'}]
myset.insert_many(data)
查询数据
#查询一条
result = myset.find_one({'name': '张三'})  
print(result)    # {'name':'张三','age':20}
#查询所有
result = myset.find()  
#查询多条
result = myset.find({'age': 20})  
for i in result:
	print(i)
按条件查询数据
#查询 age大于18的数据
results = myset.find({'age': {'$gt': 18}}) 


$lt		小于		{'age': {'$lt': 20}}
$gt		大于		{'age': {'$gt': 20}}
$lte	小于等于		{'age': {'$lte': 20}}
$gte	大于等于		{'age': {'$gte': 20}}
$ne		不等于		{'age': {'$ne': 20}}
$in		在范围内		{'age': {'$in': [20, 23]}}
$nin	不在范围内	{'age': {'$nin': [20, 23]}}
高级查询数据
#查询姓张的人
results = myset.find({'name': {'$regex': '^张.*'}})

$or         或                  {$or: [{'name': '张三'},{'name': '李四'} ]}
$and        且                  {$and: [{'name': '张三'},{'age': 18} ]}
$regex		匹配正则表达式		{'name': {'$regex': '^M.*'}}	name以M开头
$exists		属性是否存在			{'name': {'$exists': True}}		name属性存在
$type		类型判断				{'age': {'$type': 'int'}}		age的类型为int
$mod		数字模操作			{'age': {'$mod': [5, 0]}}		年龄模5余0
$text		文本查询				{'$text': {'$search': 'Mike'}}	text类型的属性中包含Mike字符串
$where	    高级条件查询		    {'$where': "this.level=='2'"}
#函数语言为JavaScript,for循环里i表示下标(存储为列表,查询条件为字符串)
{'$where':'function(){ for (var i in this.names) {if (this.names[i] == "你的名字") {return true}} return false}'}
查询的结果的方法
#计数
myset.find().count()

#排序
#升序
myset.find().sort('name', pymongo.ASCENDING)
#降序
myset.find().sort('name', pymongo.DESCENDING)

#偏移
#忽略前2个元素
myset.find().sort('age', pymongo.ASCENDING).skip(2) 

#限制查询个数
#查询前2个元素
myset.find().limit(2) 
更新数据
condition = {'age': {'$gt': 20}}  

#匹配到的第一个数据年龄设置为1
result = myset.update_one(condition, {"$set":{'age': 1}})

#匹配到的所有数据年龄设置为1
result = myset.update_many(condition, {"$set":{'age': 1}})

#匹配到的第一个数据年龄加1
result = myset.update_one(condition, {'$inc': {'age': 1}})  

#匹配到的所有数据年龄加1
result = myset.update_many(condition, {'$inc': {'age': 1}})  
删除数据
result = myset.delete_one({'name': '张三'})  

result = myset.delete_many({'age': {'$lt': 25}})  
关闭连接
mongo_conn .close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值