python连接及操作mongodb
来源:互联网 发布:关联规则挖掘算法程序 编辑:程序博客网 时间:2024/09/21 09:02
1、连接数据库(MongoClient VS Connection) 从两个类继承来看,connection是继承MongoClient的,建议使用MongoClient。
class MongoClient(pymongo.common.BaseObject)
Connection to MongoDB.
Method resolution order:
MongoClient
pymongo.common.BaseObject
__builtin__.object
VS
class Connection(pymongo.mongo_client.MongoClient)
Connection to MongoDB.
Method resolution order:
Connection
pymongo.mongo_client.MongoClient
pymongo.common.BaseObject
__builtin__.object
例:
from pymongo import MongoClient
client = MongoClient('192.168.127.117', 27037)
db_name = 'TT_Useraction'
db = client[db_name]
collection_useraction = db['useraction']
2、插入数据(save() VS insert())
区别:
1、save函数实际是根据参考条件,调用insert或update函数,如果想插入的数据存在insert函数会报错,而save函数是改变原来的对象;如果插入的对象不存在,那么执行相同的插入操作。
2、insert可以一次性插入一个列表,而不用遍历效率高,save则需要遍历列表,一个个插入
3、更新数据
对于单个数据来说,可以更新后使用save方法
update(criteria,objNew,upsert,mult) criteria:需要被更新的条件表达式;objNew:更新表达式;upsert:如目标记录不存在,是否插入新文档;multi:是否更新多个文档。
例:
collection_useraction.update({'gid':last_id, 'time':l_date}, {'$set':{'gid':last_id}, '$set':{'time':l_date}, '$addToSet':{'categories':category_data}}, upsert=True)
4、删除数据
例:
db.users.drop() #删除集合
remove(self, spec_or_id=None, safe=None, multi=True, **kwargs ) #用于删除单个或全部文档,删除后的文档无法恢复
id = db.users.find_one({"name":"user2"})["_id"]
db.users.remove(id) #根据id删除一个记录
db.users.remove() #删除集合的所有记录
db.users.remove({'yy':5}) #删除yy=5的记录
5、查询
例:
#查询age小于15的
for u in db.users.find({"age":{"$it":15}}):
print(u)
#查询name等于user8的
for u in db.users.find({"name":"user8"}):
print(u)
#获取查询的一个
u2 = db.users.find_one({"name":"user9"})
print(u2)
# select name, age from users where age = 21
for u in db.users.find({"age":21}. ["name", "age"]):
print(u)
for u in db.users.find(fields = ["name", "age"]):
print(u)
pymongo.ASCENDING #可以用1来代替
pymongo.DESCENDING #可以用-1来代替
# select * from 集合名 order by 键1
for u in db.users.find().sort([("age", pymongodb.ASCENDING)]):
print(u)
# select * from 集合名 order by 键1 asc, 键2 desc
for u in db.users.find().sort([("键1", pymongo.ASCENDING), ("键2", pymongo.DESCENDING)]):
print(u)
# sort 的另一种写法
for u in db.users.find(sort = [("键1", pymongo.ASCENDING), ("键2“, pymongo.DESCENDING)]):
print(u)
# 组合写法
for u in db.users.find({"name":"user9"}, sort = [('name', 1), ('sex', 1)], field = ["name", "age", "sex"]):
print(u)
# select * from 集合名 skip 2 limit 3
for u in db.useres.find().skip(2).limit(3):
print(u)
# 可以用切片代替 skip & limit (mongo 中的 $slice 貌似有点问题)。
for u in db.users.find()[2:5]:
print(u)
# select * from users where name = 'user3' and age > 12 and age < 15
for u in db.users.find({'age':{'$gt':12, '$lt':15}, 'name':'user3'}):
print(u)
# select * from users where age in (23, 26, 32)
for u in db.users.find({"age":{"$in":(23, 26, 32)}}):
print(u)
# select count(*) from users
count = db.users.find({"age":{"$gt":30}}).count()
# select * from 集合名 where 键1 = 值1 or 键1 = 值2
for u in db.users.find({"$or":[{"age":25}, {"age":28}]}):
print(u)
6、是否存在(exists)
db.users.find({'sex':{'$exists': True}})
7、正则表达式查询
for u in db.users.find({"name": {"$regex": r"(?i)user[135]"}}, ["name"):
print(u)
8、多级路径查询
ocument 采取 JSON-like 这种层级结构,因此我们可以直接用嵌入(Embed)代替传统关系型数据库的关联引用(Reference)。
MongoDB 支持以 "." 分割的 namespace 路径,条件表达式中的多级路径须用引号
例:
u = db.users.find_one({"im.qq": 12346565})
9、操作
(1) $all: 判断数组属性是否包含全部条件。注意和 $in 的区别。$in 是检查目标属性值是条件表达式中的一员,而 $all 则要求属性值包含全部条件元素。
(2) $size: 匹配数组属性元素数量。
(3) $type: 判断属性类型。
(4) $not: 取反,表示返回条件不成立的文档。
(5) $unset: 和 $set 相反,表示移除文档属性。
(6) $push: 和 $ pushAll 都是向数组属性添加元素。# 好像两者没啥区别
(7) $addToSet: 和 $push 类似,不过仅在该元素不存在时才添加 (Set 表示不重复元素集合)。
(8) $each 添加多个元素用。
(9) $pop: 移除数组属性的元素(按数组下标移除),$pull 按值移除,$pullAll 移除所有符合提交的元素。
(10) $where: 用 JS 代码来代替有些丑陋的 $lt、$gt。MongoDB 内置了 Javascript Engine (SpiderMonkey)。可直接使用 JS Expression,甚至使用 JS Function 写更复杂的 Code Block。
- python连接及操作mongodb
- python连接mongodb并操作
- python连接mongodb并操作
- php连接MongoDB数据库及CRUD操作详解
- MongoDB连接测试操作
- mongodb连接操作
- Java连接,操作MongoDB
- PHP连接MongoDB操作
- Python连接MySQL及对其操作
- Python连接及操作MySQL数据库
- python 连接 mongodb
- python连接mongodb
- Python如何连接MongoDB
- python 连接 MongoDB
- python连接MongoDB
- python 连接 mongodb
- Python mongoDB 客户端连接
- python连接mongodb数据库
- 前端程序员分享:我是如何学习JavaScript
- DescriptionResourcePathLocationType Project configuration is not up-to-date with pom.xml. Select
- 枚举实际项目用法
- 类声明和成员函数定义分离
- 【破解软件】百度云破解版
- python连接及操作mongodb
- python获取公网ip的几种方式
- Linux内核数据包处理流程-数据包接收(3)
- Java中calendar定时任务的小栗子~
- Spring MVC--2.入门程序
- opencv图像识别(1-17)
- STM32F10xxx 之 System tick Timer(SYSTICK Timer)(认识2)
- spring AspectJ的Execution表达式-备忘笔记(转)
- 595. Big Countries