首页 > 编程 > Python > 正文

使用Python脚本操作MongoDB的教程

2020-02-23 00:44:46
字体:
来源:转载
供稿:网友

连接数据库

MongoClient VS Connection

class MongoClient(pymongo.common.BaseObject) | Connection to MongoDB. | | Method resolution order: |   MongoClient |   pymongo.common.BaseObject |   __builtin__.object |class Connection(pymongo.mongo_client.MongoClient) | Connection to MongoDB. | | Method resolution order: |   Connection |   pymongo.mongo_client.MongoClient |   pymongo.common.BaseObject |   __builtin__.object


 

从这两个类的继承来看,connection是继承了MongoClient的,建议使用MongoClient而不是使用Connection。(也就是说,MongoClient可以使用方法Connection都可以使用)

from pymongo import MongoClientclient = MongoClient('192.168.40.87', 27037)db_name = 'TCL_Useraction'db = client[db_name]collection_useraction = db['useraction']

 

这里是通过字典的方式访问数据库和集合,同时你也可以通过.(点号)的方式访问
插入数据

save() VS insert()

mongodb的save和insert函数都可以向collection里插入数据,但两者是有两个区别:

一、save函数实际就是根据参数条件,调用了insert或update函数.如果想插入的数据对象存在,insert函数会报错,而save函数是改变原来的对象;如果想插入的对象不存在,那么它们执行相同的插入操作.这里可以用几个字来概括它们两的区别,即所谓"有则改之,无则加之".

二、insert可以一次性插入一个列表,而不用遍历,效率高, save则需要遍历列表,一个个插入。

更新数据

对于单个数据来说,可以更新后使用save方法

update(criteria, objNew, upsert, mult)
criteria: 需要被更新的条件表达式
objNew: 更新表达式
upsert: 如目标记录不存在,是否插入新文档。
multi: 是否更新多个文档。

collection_useraction.update({'gid':last_gid, 'time':l_date}, {'$set':{'gid':last_gid}, '$set':{'time':l_date}, '$addToSet':{'categories':category_data}}, upsert=True)

 
删除数据

db.users.drop() # 删除集合remove(self, spec_or_id=None, safe=None, multi=True, **kwargs)# remove() 用于删除单个或全部文档,删除后的文档无法恢复。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":{"$lt":15}}): print u

  5.1 查询一条记录

  # 查询 name 等于 user8 的  for u in db.users.find({"name":"user8"}): print u
  # 获取查询的一个  u2 = db.users.find_one({"name":"user9"}) # 查不到时返回 None  print u2            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表