python连接、操作mongodb数据库的方法实例详解

yipeiwu_com6年前Python基础

本文实例讲述了python连接、操作mongodb数据库的方法。分享给大家供大家参考,具体如下:

数据库连接

from pymongo import MongoClient
import pandas as pd
#建立MongoDB数据库连接
client = MongoClient('162.23.167.36',27101)#或MongoClient("mongodb://162.23.167.36:27101/")
#连接所需数据库,testDatabase为数据库名:
db=client.testDatabase
#连接所用集合,也就是我们通常所说的表,testTable为表名
collection=db.testTable

查询前几条

dataSet=collection.find().limit(3)
for item in dataSet:
  print(item)

无条件查询全部

dataSet=collection.find()
for item in dataSet:
  print(item)

按AND条件查询全部

#查询cpu使用率大于等于10且内存使用率大于等于10的所有字段数据
dataSet=collection.find({"cpu":{"$gte":10},"mem":{"$gte":10}})
for item in dataSet:
  print(item)

按AND条件查询指定字段数据

#查询cpu使用率大于等于10且内存使用率大于等于10的数据,字段只显示did、ts、cpu、mem
dataSet=collection.find({"cpu":{"$gte":10},"mem":{"$gte":10}}, {"did":1,"ts":1,"cpu":1,"mem":1})
for item in dataSet:
  print(item)
#查询cpu使用率等于0且内存使用率等于0的数据,字段只显示did、ts、cpu、mem
dataSet=collection.find({"cpu":0,"mem":0}, {"did":1,"ts":1,"cpu":1,"mem":1})
for item in dataSet:
  print(item)

按OR条件查询指定字段数据

#查询cpu使用率大于等于10或者内存使用率大于等于10的数据,字段只显示did、ts、cpu、mem
dataSet=collection.find({"$or":[{"cpu":{"$gte":10}},{"mem":{"$gte":10}}]}, {"did":1,"ts":1,"cpu":1,"mem":1})
for item in dataSet:
  print(item)
#查询cpu使用率等于10或者内存使用率等于10的数据,字段只显示did、ts、cpu、mem
dataSet=collection.find({"$or":[{"cpu":10},{"mem":10}]}, {"did":1,"ts":1,"cpu":1,"mem":1})
for item in dataSet:
  print(item)

mongodb的条件操作符

#  > - $gt
#  < - $lt
#  >= - $gte
#  <= - $lte

排序

#单列升序排序查询,,1 为升序,-1为降序
dataSet=collection.find().sort([("cpu",1)])
for item in dataSet:
  print(item)
#多列排序查询
dataSet=collection.find().sort([('did',pymongo.ASCENDING),('cpu',pymongo.DESCENDING)])
for item in dataSet:
  print(item)

查询结果写入excel

#查询cpu使用率大于等于10且内存使用率大于等于10的数据,字段只显示did、ts、cpu、mem,查询结果写入excel
import pandas as pd
dataSet=collection.find({"cpu":{"$gte":10},"mem":{"$gte":10}}, {"did":1,"ts":1,"cpu":1,"mem":1})
did,ts,cpu,mem=[],[],[],[]
for item in dataSet:
  did.append(item["did"])
  ts.append(item["ts"])
  cpu.append(item["cpu"])
  mem.append(item["mem"])
df=pd.DataFrame({"did":did,"ts":ts,"cpu":cpu,"mem":mem})
df.to_excel("C:/Users/Desktop/设备cpu内存数据.xlsx")

跳行查询

#下面表示跳过两条数据后读取数据
dataSet=collection.find().skip(2)
for item in dataSet:
  print(item)

去重

#查询cpu使用率大于20、did不重复的数据
dataSet=collection.distinct("did",{"cpu":{$gt:20}})
for item in dataSet:
  print(item)
#等同mysql的select distinct(did) from user where cpu>20

参考:

操作mongodb更详细说明/post/169726.htm

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python常见数据库操作技巧汇总》、《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

相关文章

Python在不同目录下导入模块的实现方法

python在不同层级目录import模块的方法 使用python进行程序编写时,经常会调用不同目录下的模块及函数。本篇博客针对常见的模块调用讲解导入模块的方法。 1. 同级目录下的调用...

复化梯形求积分实例——用Python进行数值计算

复化梯形求积分实例——用Python进行数值计算

用程序来求积分的方法有很多,这篇文章主要是有关牛顿-科特斯公式。 学过插值算法的同学最容易想到的就是用插值函数代替被积分函数来求积分,但实际上在大部分场景下这是行不通的。 插值函数一般是...

对python借助百度云API对评论进行观点抽取的方法详解

对python借助百度云API对评论进行观点抽取的方法详解

通过百度云API接口抽取得到产品评论的观点,也掠去了很多评论中无用的内容以及符号,为后续进行文本主题挖掘或者规则的提取提供基础。 工具 1、百度云账号,申请应用接口(自然语言处理) 2...

python实现把两个二维array叠加成三维array示例

python实现把两个二维array叠加成三维array示例

遇到这样一个需求:程序中每次循环生成一个二维array,需要把每次循环的二维array叠加成一个三维的array,例如有如下两个矩阵: 组合成以下这种形式: 这样组合之后,有一个非常...

python3+PyQt5使用数据库窗口视图

python3+PyQt5使用数据库窗口视图

能够为数据库数据提供的最简单的用户界面之一就是窗体,窗体可以一次性呈现出来自同一记录的各个域。本文通过python3+pyqt5改写实现了python Qt gui 快速变成15章的例子...