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

  1. from pymongo import MongoClient
  2.  
  3. client = MongoClient('192.168.40.87', 27037)
  4. db_name = 'TCL_Useraction'
  5. db = client[db_name]
  6. 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: 是否更新多个文档。
  1. collection_useraction.update({'gid':last_gid, 'time':l_date},
  2. {'$set':{'gid':last_gid},
  3. '$set':{'time':l_date},
  4. '$addToSet':{'categories':category_data}},
  5. upsert=True)

4.删除数据

  1. db.users.drop() # 删除集合
  2.  
  3. # remove(self, spec_or_id=None, safe=None, multi=True, **kwargs)
  4. # remove() 用于删除单个或全部文档,删除后的文档无法恢复。
  5. id = db.users.find_one({"name":"user2"})["_id"]
  6. db.users.remove(id) # 根据 id 删除一条记录
  7. db.users.remove() # 删除集合里的所有记录
  8. db.users.remove({'yy':5}) # 删除yy=5的记录

5.查询

  1. # 查询 age 小于 15 的
  2. for u in db.users.find({"age":{"$lt":15}}):
  3. print(u)
5.1 查询一条记录
  1. # 查询 name 等于 user8 的
  2. for u in db.users.find({"name":"user8"}):
  3. print(u)
  4.  
  5. # 获取查询的一个
  6. u2 = db.users.find_one({"name":"user9"}) # 查不到时返回 None
  7. print(u2)
5.2 查询特定键 (fields)

特别说明
在3.0版本中,这个参数已经改名为projection,若用fields会报错

  1. # select name, age from users where age = 21
  2. for u in db.users.find({"age":21}, ["name", "age"]):
  3. print(u)
  4. for u in db.users.find(fields = ["name", "age"]):
  5. print(u)
5.3 排序(SORT)
  1. pymongo.ASCENDING # 也可以用 1 来代替
  2. pymongo.DESCENDING # 也可以用 -1 来代替
  3.  
  4. for u in db.users.find().sort([("age", pymongo.ASCENDING)]):
  5. print(u) # select * from 集合名 order by 键1
  6.  
  7. for u in db.users.find().sort([("age", pymongo.DESCENDING)]):
  8. print(u) # select * from 集合名 order by 键1 desc
  9.  
  10. for u in db.users.find().sort([("键1", pymongo.ASCENDING), ("键2", pymongo.DESCENDING)]):
  11. print(u) # select * from 集合名 order by 键1 asc, 键2 desc
  12.  
  13. for u in db.users.find(sort = [("键1", pymongo.ASCENDING), ("键2", pymongo.DESCENDING)]):
  14. print(u) # sort 的另一种写法
  15.  
  16. for u in db.users.find({"name":"user9"}, sort=[['name',1],['sex',1]], fields = ["name", "age", 'sex']):
  17. print(u) # 组合写法
  1.  
  2. fof项目中使用场景小例子:
  1. import pymongo
  2. import datetime
  3. from pymongo import MongoClient
  4.  
  5. connection = MongoClient('localhost')
  6. db = connection.fof
  7. stock_cache = db.stock_cache
  8.  
  9. #post = {"20160301": "Mike","text": "My first blog post!","tags": ["mongodb", "python", "pymongo"],"date": datetime.datetime.utcnow()}
  10. post = {'date':'',"stocks":['',''],'ep':{'':'','':''},'market_value':{'':'100m','':'101m'},'stock_share':{'':'100s','':'101s'}}
  11. #db.stock_cache.drop()
  12. #db.stock_cache.insert(post)
  13. docs = db.stock_cache.find({'date':''})
  14.  
  15. for doc in docs:
  16. stocks = doc.get('stocks')
  17. print('stocks',stocks)
  18. for stock in stocks:
  19. market_value = doc.get('market_value').get(stock)
  20. print('market_value',market_value)
  21. market_value = doc.get('stock_share').get(stock)
  22. print('stock_share', market_value)
  23. #mongoCall.insert({'name':'li'})
  1.  
  1.  
  1.  

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

  1. mongo数据库基本操作--python篇

    连接数据库 MongoClient VS Connection class MongoClient(pymongo.common.BaseObject) | Connection to MongoDB ...

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

    原文链接:[MongoDB]windows平台搭建Mongo数据库复制集(类似集群)(一) Replica  Sets(复制集)是在mongodDB1.6版本开始新增的功能,它可以实现故障自动切换和自 ...

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

    Mongo 数据库 安装 首先到 Mongo 的官方网站下载安装程序:http://www.mongodb.org/,我下载的文件名为:mongodb-win32-x86_64-2008plus-2. ...

  4. mongo数据库基础操作

    概念 一个mongod服务可以有建立多个数据库,每个数据库可以有多张表,这里的表名叫collection,每个collection可以存放多个文档(document),每个文档都以BSON(binar ...

  5. ecmall数据库基本操作

    ecmall数据库基本操作,为了认真研究ecmall二次开发,我们必须熟悉ecamll的数据库结构,ecmall数据库结构研究熟悉之后,才能去认真分析ecamll的程序结构.从而实现ecmall二次开 ...

  6. Oracle 数据库基本操作——实用手册、表操作、事务操作、序列

    目录: 0. 参考链接与参考手册1. oracle 实用(常用操作)指令2. 数据库基本操作语法 a) 表操作 1)创建表 2)更新表 3)删除表 4)查询 b) 事务操作 c) 序列操作 1)创建序 ...

  7. 二、mongo数据库

    官网:https://www.mongodb.com/ 进入官网 右上角有个下载按钮Download 1.完成安装后:运行--cmd(命令面板) 2.常用命令: 打开数据库 mongod –dbpat ...

  8. MySQL系列:数据库基本操作(1)

    1. 登录数据库 mysql -h localhost -u root -p 2. 数据库基本操作 2.1 查看数据库 mysql> SHOW DATABASES; +------------- ...

  9. Docker Mongo数据库开启用户认证

    一.启动mongo容器的几种方式 #简化版 docker run --name mongo1 -p 21117:27017 -d mongo --noprealloc --smallfiles #自定 ...

随机推荐

  1. JS中for in 与 for of

    // 数组var A=[4,6,74,67]; for in:拿到的是数组下标 for (let i in A){ console.log(i); } //0,1,2,3 for of:拿到的是数组元 ...

  2. python读取xml文件中的坐标点

    用labelImg工具制作好xml文件后,需要读取其中img路径和坐标点,生成一个label.txt <annotation> <folder>big</folder&g ...

  3. MYSQL 总结——2

    1.mysql限制显示条目数:Limit,  Offset 图片网址:https://sqlbolt.com/lesson/filtering_sorting_query_results 实例: SE ...

  4. PIL合并4张图demo 800px以下的居中显示小例子

    from PIL import Image #新建一个空白文件 大小为1600*1600 颜色为白色 newIm= Image.new('RGB', (1600, 1600), 'white') #打 ...

  5. CSS样式表与HTML结合的方法

    从此王子和公主幸福的生活在了一起:) 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文 ...

  6. PAT 1084 Broken Keyboard

    1084 Broken Keyboard (20 分)   On a broken keyboard, some of the keys are worn out. So when you type ...

  7. HTML中引用外部JS文件失效原因

    今天在练习中碰到“引用外部的一个js文件但是却失效”的情况,实在不懂,百度后才知是引用的位置不对,错误的代码如下: <head> <meta charset="UTF-8& ...

  8. GIS中的引擎:地图引擎

    什么是地图引擎?它和地图软件有什么区别? 引擎一词是英文单词engine的音译,通常指发动机,就是动力输出设备.诸如汽车.轮船.飞机的动力提供的核心设备就是引擎.IT领域中,常听说的有搜索引擎.图形引 ...

  9. python之路-----网络编程

    一:客户端/服务端j架构(C/S架构) 在生活中,最常见的C/S架构即是APP和网页服务器这个架构.Client和Server之间利用网络来进行通信,客户端和服务器端的程序不同,用户的程序主要在客户端 ...

  10. Python-接口自动化(一)

    python基础知识(一) 一.python语言特点 1.易于学习:python有相对较少的关键字,结构简单,有一个明确定义的语法,学起来比较简单: 2.易于阅读:python代码定义的更清晰: 3. ...