python使用pymongo访问MongoDB的基本操作,以及CSV文件导出

python使用pymongo访问MongoDB的基本操作,以及CSV文件导出

1. 环境。

Python:3.6.1
Python IDE:pycharm
系统:win7

2. 简单示例

import pymongo

# mongodb服务的地址和端口号
mongo_url = "127.0.0.1:27017"

# 连接到mongodb,如果参数不填,默认为“localhost:27017”
client = pymongo.MongoClient(mongo_url)

#连接到数据库myDatabase
DATABASE = "myDatabase"
db = client[DATABASE]

#连接到集合(表):myDatabase.myCollection
COLLECTION = "myCollection"
db_coll = db[COLLECTION ]

# 在表myCollection中寻找date字段等于2017-08-29的记录,并将结果按照age从大到小排序
queryArgs = {
  'date':'2017-08-29'}
search_res = db_coll.find(queryArgs).sort('age',-1)
for record in search_res:
      print(f"_id = {record['_id']}, name = {record['name']}, age = {record['age']}")

3. 要点

  • 针对读操作,进行数据统计,尽量使用多线程,节省时间,只是要注意线程数量,会大量吃内存。

4. mongoDB的数据类型

  • MongoDB支持许多数据类型,如下:

    • 字符串 - 用于存储数据的最常用的数据类型。MongoDB中的字符串必须为UTF-8。
    • 整型 - 用于存储数值。 整数可以是32位或64位,具体取决于服务器。
    • 布尔类型 - 用于存储布尔值(true / false)值。
    • 双精度浮点数 - 用于存储浮点值。
    • 最小/最大键 - 用于将值与最小和最大BSON元素进行比较。
    • 数组 - 用于将数组或列表或多个值存储到一个键中。
    • 时间戳 - ctimestamp,当文档被修改或添加时,可以方便地进行录制。
    • 对象 - 用于嵌入式文档。
    • 对象 - 用于嵌入式文档。
    • Null - 用于存储Null值。
    • 符号 - 该数据类型与字符串相同; 但是,通常保留用于使用特定符号类型的语言。
    • 日期 - 用于以UNIX时间格式存储当前日期或时间。您可以通过创建日期对象并将日,月,年的 - 日期进行指定自己需要的日期时间。
    • 对象ID - 用于存储文档的ID。
    • 二进制数据 - 用于存储二进制数据。
    • 代码 - 用于将JavaScript代码存储到文档中。
    • 正则表达式 - 用于存储正则表达式。
  • 不支持的数据类型:

    • python中的集合(set)

5. 对表(集合collection)的操作

import pymongo

# mongodb服务的地址和端口号
mongo_url = "127.0.0.1:27017"

# 连接到mongodb,如果参数不填,默认为“localhost:27017”
client = pymongo.MongoClient(mongo_url)
#连接到数据库myDatabase
DATABASE = "amazon"
db = client[DATABASE]

#连接到集合(表):myDatabase.myCollection
COLLECTION = "galance20170801"
db_coll = db[COLLECTION]

5.1. 查找记录:find

  • (5.1.1)指定返回哪些字段
# 示例一:所有字段
# select * from galance20170801
searchRes = db_coll.find()
# 或者searchRes = db_coll.find({}) 
# 示例二:用字典指定要显示的哪几个字段
# select _id,key from galance20170801
queryArgs = {}
projectionFields = {
  '_id':True, 'key':True}  # 用字典指定
searchRes = db_coll.find(queryArgs, projection = projectionFields)
# 结果{'_id': 'B01EYCLJ04', 'key': 'pro audio'}
# 示例三:用字典指定去掉哪些字段
queryArgs = {}
projectionFields = {
  '_id':False, 'key':False}  # 用字典指定
searchRes = db_coll.find(queryArgs, projection = projectionFields)
# 结果{'activity': False, 'avgStar': 4.3,  'color': 'Yellow & Black', 'date': '2017-08-01'}
# 示例四:用列表指定要显示哪几个字段
# select _id,key,date from galance20170801
queryArgs = {}
projectionFields = ['key','date']  # 用列表指定,结果中一定会返回_id这个字段
searchRes = db_coll.find(queryArgs, projection = projectionFields)
# 结果{'_id': 'B01EYCLJ04', 'date': '2017-08-01', 'key': 'pro audio'}
  • (5.1.2)指定查询条件
    • (5.1.2.1). 比较:=,!=,>, <, >=, <=
$ne:不等于(not equal)
$gt:大于(greater than)
$lt:小于(less than)
$lte:小于等于(less than equal)
$gte:大于等于(greater than equal)
# 示例一:相等
# select _id,key,sales,date from galance20170801 where key = 'TV & Video'
queryArgs = {
  'key':'TV & Video'}
projectionFields = ['key','sales','date']
searchRes = db_coll.find(queryArgs, projection = projectionFields)
# 结果:{'_id': '0750699973', 'date': '2017-08-01', 'key': 'TV & Video', 'sales': 0}
# 示例二:不相等
# select _id,key,sales,date from galance20170801 where sales != 0
queryArgs = {
  'sales':{
  '$ne':0}}
projectionFields = ['key','sales',
  • 23
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值