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‘:‘20160302‘,"stocks":[‘001‘,‘002‘],‘ep‘:{‘001‘:‘100‘,‘002‘:‘101‘},‘market_value‘:{‘001‘:‘100m‘,‘002‘:‘101m‘},‘stock_share‘:{‘001‘:‘100s‘,‘002‘:‘101s‘}}
#db.stock_cache.drop()
#db.stock_cache.insert(post)
docs = db.stock_cache.find({‘date‘:‘20160301‘})

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‘})

 
				
时间: 2024-11-08 20:46:05

Mongo数据库基本操作的相关文章

ubuntu安装mongo数据库

安装mongo数据库,在shell下输入 sudo apt-get install mongodb 如果需要在Python中使用mongo数据库,还需要额外安装Python封装库 pip install pymongo 检测安装是否成功,可以使用下面命令在本地启动MongoDB mongod -dbpath . 在shell中输入mongo,就可以进入mongo数据库 查询数据库语句 > show databases; cache 0.0625GB local 0.03125GB 使用数据库语句

3.22数据库基础知识:①数据类型②基本规则③数据库基本操作,增删改库,表

数据库:①数据类型②基本规则③数据库基本操作,增删改库,表 DATABASE 数据库Relational Database 关系型数据库column 列 row行Primary Key 主键 Foreign Key 外键DBMS 数据库管理系统 Database Management SystemRDBNS 关系型数据库管理系统SQL Structured Query Language 结构化查询语言SQL 分为:DDL DQL DML DCL 一.数据类型:1.整数型:INT BIGINT2.

一段mongo数据库数据丢失 引发的血案

2017年1月8日上无,一个晴朗的早上(大周末的晴朗的早上),我还在梦境中,被一个电话吵醒,众所周知,做运维的最怕在休息期间接到公司同仁电话! 起因:同事说线上的某个功能不能用了!(这个功能就是在mongo数据库中获取数据返给前端进行渲染) 经过:之前也出现过类似的问题,排查故障后是因为mongo实例挂掉(某种原因造成),这次没想到事情比之前的故障还要叫人毛骨悚然----------mongo的数据丢了 我的个天啊.里面存放了不到5千万条的数据啊.丢了这可咋弄啊? 解决:把mongo数据丢失关键

数据库基本操作(二)--数据查询

//数据查询 create database JXGL; //创建数据库 use JXGL;//使用数据库 create table S( Sno char(10) not null unique, Sname char(20) not null unique, Ssex char(2), Sage int, Sdept char(20)); create table C( Cno char(2) not  null primary key (Cno), Cname char(20), Teac

1Python全栈之路系列之MySQL数据库基本操作

Python全栈之路系列之MySQL数据库基本操作 MySQL数据库介绍 MySQL是一种快速易用的关系型数据库管理系统(RDBMS),很多企业都在使用它来构建自己的数据库. MySQL由一家瑞典公司MySQL AB开发.运营并予以支持.它之所以非常流行,原因在于具备以下这些优点: 基于开源许可发布,无需付费即可使用. 自身的功能非常强大,足以匹敌绝大多数功能强大但却价格昂贵的数据库软件. 使用业内所熟悉的标准SQL数据库语言. 可运行于多个操作系统,支持多种语言,包括 PHP.PERL.C.C

【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(三)

关于windows平台搭建Mongo数据库复制集这个话题,我已经在前面写了两篇博客 第一篇: 如何在windows平台搭建Mongo数据库复制集 第二篇: 数据同步和故障自适应测试 在本篇里面,咱们重点总结一下复制集,以及分析一下它的工作原理 一.常见场景 应用程序和数据库之间的网络连接丢失 计划停机.断电.数据库服务硬盘故障等等 复制可以进行故障转移,复制能让你在副本间均衡读负载,保证复制节点与主节点保持同步 二.工作原理 副本集依赖于两个基础机制:oplog和"心跳"(heartb

mongo数据库--非关系型数据库

mongo数据库--非关系型数据库

将 node.js 的数据保存到 mongo 数据库中

Mongo 数据库 安装 首先到 Mongo 的官方网站下载安装程序:http://www.mongodb.org/,我下载的文件名为:mongodb-win32-x86_64-2008plus-2.6.4-signed.msi 执行安装程序. 下一步 同意许可协议 可以选择定制 Custom 看一下. 全部装上吧. 开始实际安装. MongoDB 默认安装到了 C:\Program Files\MongoDB 2.6 Standard\bin 目录下,但是,没有自动添加到 Path 路径中,手

【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(转)

原文链接:[MongoDB]windows平台搭建Mongo数据库复制集(类似集群)(一) Replica  Sets(复制集)是在mongodDB1.6版本开始新增的功能,它可以实现故障自动切换和自动修复功能成员节点的功能,各个DB之间的数据完全一致,大大降低了单点故障的风险. [] 以上图示是三个节点的Replica Set架构.该图来源于红丸编写的<Mongodb管理与开发精要>这本书.从上图可以看出,结构类似与一个集群,其实完全可以当做一个集群.因为它确实和集群实现的作用是相同的. 一