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()