Mongo数据库基本操作
从这两个类的继承来看,connection是继承了MongoClient的,建议使用MongoClient而不是使用Connection。(也就是说,MongoClient可以使用方法Connection都可以使用)
from pymongo import MongoClient
client = MongoClient('192.168.40.87', 27037)
db_name = 'TCL_Useraction'
db = client[db_name]
collection_useraction = db['useraction']
这里是通过字典的方式访问数据库和集合,同时你也可以通过.(点号)的方式访问
2.插入数据
save() VS insert()
mongodb的save和insert函数都可以向collection里插入数据,但两者是有两个区别:
一、save函数实际就是根据参数条件,调用了insert或update函数.如果想插入的数据对象存在,insert函数会报错,而save函数是改变原来的对象;如果想插入的对象不存在,那么它们执行相同的插入操作.这里可以用几个字来概括它们两的区别,即所谓"有则改之,无则加之".
二、insert可以一次性插入一个列表,而不用遍历,效率高, save则需要遍历列表,一个个插入。
3.更新数据
对于单个数据来说,可以更新后使用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)
4.删除数据
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)
5.2 查询特定键 (fields)
特别说明:
在3.0版本中,这个参数已经改名为projection,若用fields会报错
# 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)
5.3 排序(SORT)
pymongo.ASCENDING # 也可以用 1 来代替
pymongo.DESCENDING # 也可以用 -1 来代替 for u in db.users.find().sort([("age", pymongo.ASCENDING)]):
print(u) # select * from 集合名 order by 键1 for u in db.users.find().sort([("age", pymongo.DESCENDING)]):
print(u) # select * from 集合名 order by 键1 desc for u in db.users.find().sort([("键1", pymongo.ASCENDING), ("键2", pymongo.DESCENDING)]):
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({"name":"user9"}, sort=[['name',1],['sex',1]], fields = ["name", "age", 'sex']):
print(u) # 组合写法
fof项目中使用场景小例子:
import pymongo
import datetime
from pymongo import MongoClient connection = MongoClient('localhost')
db = connection.fof
stock_cache = db.stock_cache #post = {"20160301": "Mike","text": "My first blog post!","tags": ["mongodb", "python", "pymongo"],"date": datetime.datetime.utcnow()}
post = {'date':'',"stocks":['',''],'ep':{'':'','':''},'market_value':{'':'100m','':'101m'},'stock_share':{'':'100s','':'101s'}}
#db.stock_cache.drop()
#db.stock_cache.insert(post)
docs = db.stock_cache.find({'date':''}) for doc in docs:
stocks = doc.get('stocks')
print('stocks',stocks)
for stock in stocks:
market_value = doc.get('market_value').get(stock)
print('market_value',market_value)
market_value = doc.get('stock_share').get(stock)
print('stock_share', market_value)
#mongoCall.insert({'name':'li'})
Mongo数据库基本操作的更多相关文章
- mongo数据库基本操作--python篇
连接数据库 MongoClient VS Connection class MongoClient(pymongo.common.BaseObject) | Connection to MongoDB ...
- 【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(转)
原文链接:[MongoDB]windows平台搭建Mongo数据库复制集(类似集群)(一) Replica Sets(复制集)是在mongodDB1.6版本开始新增的功能,它可以实现故障自动切换和自 ...
- 将 node.js 的数据保存到 mongo 数据库中
Mongo 数据库 安装 首先到 Mongo 的官方网站下载安装程序:http://www.mongodb.org/,我下载的文件名为:mongodb-win32-x86_64-2008plus-2. ...
- mongo数据库基础操作
概念 一个mongod服务可以有建立多个数据库,每个数据库可以有多张表,这里的表名叫collection,每个collection可以存放多个文档(document),每个文档都以BSON(binar ...
- ecmall数据库基本操作
ecmall数据库基本操作,为了认真研究ecmall二次开发,我们必须熟悉ecamll的数据库结构,ecmall数据库结构研究熟悉之后,才能去认真分析ecamll的程序结构.从而实现ecmall二次开 ...
- Oracle 数据库基本操作——实用手册、表操作、事务操作、序列
目录: 0. 参考链接与参考手册1. oracle 实用(常用操作)指令2. 数据库基本操作语法 a) 表操作 1)创建表 2)更新表 3)删除表 4)查询 b) 事务操作 c) 序列操作 1)创建序 ...
- 二、mongo数据库
官网:https://www.mongodb.com/ 进入官网 右上角有个下载按钮Download 1.完成安装后:运行--cmd(命令面板) 2.常用命令: 打开数据库 mongod –dbpat ...
- MySQL系列:数据库基本操作(1)
1. 登录数据库 mysql -h localhost -u root -p 2. 数据库基本操作 2.1 查看数据库 mysql> SHOW DATABASES; +------------- ...
- Docker Mongo数据库开启用户认证
一.启动mongo容器的几种方式 #简化版 docker run --name mongo1 -p 21117:27017 -d mongo --noprealloc --smallfiles #自定 ...
随机推荐
- HDU - 1575——矩阵快速幂问题
HDU - 1575 题目: A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input数据的第一行是一个T,表示有T组数据. 每组数据的第一行有n( ...
- 『TensorFlow』0.x_&_1.x版本框架改动汇总
基本数值运算 除法和模运算符(/,//,%)现在匹配 Python(flooring)语义.这也适用于 [tf.div] 和 [tf.mod].要获取基于强制整数截断的行为,可以使用 [tf.trun ...
- Pyhon中运算符的使用
1. a & b python中的&延续了C/C++的含义,表示位运算. 例如 3 & 4:3&5:6&7 3 & 4 = (011)2 & ( ...
- vim 插件 -- omnicppcomplete
omnicppcomplete 插件是基于ctags来实现补全的.所以,要先安装好ctags才可以使用. 下载 https://www.vim.org/scripts/script.php?scrip ...
- Java toBinaryString()函数探究及Math.abs(-2147483648)=-2147483648原理探究
toBinaryString()函数 public class Customer { public static void main(String[] args) { int m=-8; System ...
- encodeURIComponent编码与解码
问题:JavaScript用encodeURIComponentt编码后无法再后台解码的问题. 目前写法: window.self.location="list.jsp?searchtext ...
- 【Java集合系列三】Vector-Stack解析
2017-07-29 12:59:14 一.简介 1.Vector继承关系 2.Vector类扩容 Vector类的实现和ArrayList极其相似,都使用数组存储元素,但是扩容策略不一样,Array ...
- Linux之expr命令详解
expr命令: expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串. –格式为: expr Expression(命令读入Expressi ...
- mybatis源码解析之环境准备
概述 对于mybatis而言,大家一定都不陌生,我相信很多同学都跟我一样,用起来非常的熟练,但是其内部的实现原理呢,不太清楚,经常面试的时候,面试官问及这方面的知识,都只能尴尬的回答不知道,或者不清楚 ...
- Android开发 ---多线程操作:Handler对象,消息队列,异步任务下载
效果图: 1.activity_main.xml 描述:定义了六个按钮 <?xml version="1.0" encoding="utf-8"?> ...