非常教程

Python 3 教程教程

Python Mongodb 查询文档

Python Mongodb 查询文档

Python Mongodb 查询文档

Python Mongodb 查询文档

Python Mongodb

MongoDB 中使用了 find 和 find_one 方法来查询集合中的数据,它类似于 SQL 中的 SELECT 语句。

本文使用的测试数据如下:

Python Mongodb 查询文档

查询一条数据

我们可以使用 find_one() 方法来查询集合中的一条数据。

查询 sites 文档中的第一条数据:

实例

#!/usr/bin/python3 import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["verydocdb"] mycol = mydb["sites"] x = mycol.find_one() print(x)

输出结果为:

{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'verydoc', 'alexa': '10000', 'url': 'https://www.verydoc.net'}

查询集合中所有数据

find() 方法可以查询集合中的所有数据,类似 SQL 中的 SELECT * 操作。

以下实例查找 sites 集合中的所有数据:

实例

#!/usr/bin/python3 import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["verydocdb"] mycol = mydb["sites"] for x in mycol.find(): print(x)

输出结果为:

{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'verydoc', 'alexa': '10000', 'url': 'https://www.verydoc.net'}
{'_id': ObjectId('5b2369cac315325f3698a1cf'), 'name': 'Google', 'alexa': '1', 'url': 'https://www.google.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb6'), 'name': 'Taobao', 'alexa': '100', 'url': 'https://www.taobao.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb7'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb8'), 'name': 'Facebook', 'alexa': '10', 'url': 'https://www.facebook.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb9'), 'name': '知乎', 'alexa': '103', 'url': 'https://www.zhihu.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbba'), 'name': 'Github', 'alexa': '109', 'url': 'https://www.github.com'}

查询指定字段的数据

我们可以使用 find() 方法来查询指定字段的数据,将要返回的字段对应值设置为 1。

实例

#!/usr/bin/python3 import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["verydocdb"] mycol = mydb["sites"] for x in mycol.find({},{ "_id": 0, "name": 1, "alexa": 1 }): print(x)

输出结果为:

{'name': 'verydoc', 'alexa': '10000'}
{'name': 'Google', 'alexa': '1'}
{'name': 'Taobao', 'alexa': '100'}
{'name': 'QQ', 'alexa': '101'}
{'name': 'Facebook', 'alexa': '10'}
{'name': '知乎', 'alexa': '103'}
{'name': 'Github', 'alexa': '109'}

除了 _id 你不能在一个对象中同时指定 0 和 1,如果你设置了一个字段为 0,则其他都为 1,反之亦然。

以下实例除了 alexa 字段外,其他都返回:

实例

#!/usr/bin/python3 import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["verydocdb"] mycol = mydb["sites"] for x in mycol.find({},{ "alexa": 0 }): print(x)

输出结果为:

{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'verydoc', 'url': 'https://www.verydoc.net'}
{'_id': ObjectId('5b2369cac315325f3698a1cf'), 'name': 'Google', 'url': 'https://www.google.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb6'), 'name': 'Taobao', 'url': 'https://www.taobao.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb7'), 'name': 'QQ', 'url': 'https://www.qq.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb8'), 'name': 'Facebook', 'url': 'https://www.facebook.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb9'), 'name': '知乎', 'url': 'https://www.zhihu.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbba'), 'name': 'Github', 'url': 'https://www.github.com'}

以下代码同时指定了 0 和 1 则会报错

实例

#!/usr/bin/python3 import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["verydocdb"] mycol = mydb["sites"] for x in mycol.find({},{ "name": 1, "alexa": 0 }): print(x)

错误内容大概如下:

...
pymongo.errors.OperationFailure: Projection cannot have a mix of inclusion and exclusion.
...

根据指定条件查询

我们可以在 find() 中设置参数来过滤数据。

以下实例查找 name 字段为 "verydoc" 的数据:

实例

#!/usr/bin/python3 import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["verydocdb"] mycol = mydb["sites"] myquery = { "name": "verydoc" } mydoc = mycol.find(myquery) for x in mydoc: print(x)

输出结果为:

{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'verydoc', 'alexa': '10000', 'url': 'https://www.verydoc.net'}

高级查询

查询的条件语句中,我们还可以使用修饰符。

以下实例用于读取 name 字段中第一个字母 ASCII 值大于 "H" 的数据,大于的修饰符条件为 {"$gt": "H"} :

实例

#!/usr/bin/python3 import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["verydocdb"] mycol = mydb["sites"] myquery = { "name": { "$gt": "H" } } mydoc = mycol.find(myquery) for x in mydoc: print(x)

输出结果为:

{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'verydoc', 'alexa': '10000', 'url': 'https://www.verydoc.net'}
{'_id': ObjectId('5b236aa9c315325f5236bbb6'), 'name': 'Taobao', 'alexa': '100', 'url': 'https://www.taobao.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb7'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb9'), 'name': '知乎', 'alexa': '103', 'url': 'https://www.zhihu.com'}

使用正则表达式查询

我们还可以使用正则表达式作为修饰符。

正则表达式修饰符只用于搜索字符串的字段。

以下实例用于读取 name 字段中第一个字母为 "R" 的数据,正则表达式修饰符条件为 {"$regex": "^R"} :

实例

#!/usr/bin/python3 import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["verydocdb"] mycol = mydb["sites"] myquery = { "name": { "$regex": "^R" } } mydoc = mycol.find(myquery) for x in mydoc: print(x)

输出结果为:

{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'verydoc', 'alexa': '10000', 'url': 'https://www.verydoc.net'}

返回指定条数记录

如果我们要对查询结果设置指定条数的记录可以使用 limit() 方法,该方法只接受一个数字参数。

以下实例返回 3 条文档记录:

实例

import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["verydocdb"] mycol = mydb["sites"] myresult = mycol.find().limit(3) # 输出结果 for x in myresult: print(x)

输出结果为:

{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'verydoc', 'alexa': '10000', 'url': 'https://www.verydoc.net'}
{'_id': ObjectId('5b2369cac315325f3698a1cf'), 'name': 'Google', 'alexa': '1', 'url': 'https://www.google.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb6'), 'name': 'Taobao', 'alexa': '100', 'url': 'https://www.taobao.com'}

Python Mongodb 查询文档

Python Mongodb

Python Mongodb 查询文档
Python 3 教程

Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。

Python 3 教程目录

1.Python3 函数
2.Python3 编程第一步
3.Python3 列表
4.Python3 字符串
5.Python3 数字(Number)
6.Python3 注释
7.Python3 解释器
8.Python3 模块
9.Python3 数据结构
10.Python3 标准库概览
11.Python3 基础语法
12.Python 随机数生成
13.Python 计算三角形的面积
14.Python 二次方程
15.Python 平方根
16.Python 数字求和
17.Python Hello World 实例
18.Python3 实例
19.Python 九九乘法表
20.Python 阶乘实例
21.Python 质数判断
22.Python 获取最大值函数
23.Python 判断闰年
24.Python 判断奇数偶数
25.Python 判断字符串是否为数字
26.Python if 语句
27.Python 交换变量
28.Python 摄氏温度转华氏温度
29.Python 文件 IO
30.Python 使用递归斐波那契数列
31.Python 生成日历
32.Python 简单计算器实现
33.Python 最小公倍数算法
34.Python 最大公约数算法
35.Python ASCII码与字符相互转换
36.Python 十进制转二进制、八进制、十六进制
37.Python 阿姆斯特朗数
38.Python 斐波那契数列
39.Python list 常用操作
40.Python 获取昨天日期
41.Python 计算每个月天数
42.Python 字符串大小写转换
43.Python 字符串判断
44.Python3 ceil() 函数
45.Python3 abs() 函数
46.Python3 运算符
47.Python3 命令行参数
48.Python3 round() 函数
49.Python3 pow() 函数
50.Python3 modf() 函数
51.Python3 min() 函数
52.Python3 max() 函数
53.Python3 log10() 函数
54.Python3 log() 函数
55.Python3 floor() 函数
56.Python3 fabs() 函数
57.Python3 exp() 函数
58.Python3 atan() 函数
59.Python3 asin() 函数
60.Python3 acos() 函数
61.Python3 uniform() 函数
62.Python3 shuffle() 函数
63.Python3 seed() 函数
64.Python3 random() 函数
65.Python3 randrange() 函数
66.Python3 choice() 函数
67.Python3 sqrt() 函数
68.Python3 count()方法
69.Python3 center()方法
70.Python3 capitalize()方法
71.Python3 radians() 函数
72.Python3 degrees() 函数
73.Python3 tan() 函数
74.Python3 sin() 函数
75.Python3 hypot() 函数
76.Python3 cos() 函数
77.Python3 atan2() 函数
78.Python3 islower()方法
79.Python3 isdigit()方法
80.Python3 isalpha()方法
81.Python3 isalnum()方法
82.Python3 index()方法
83.Python3 find()方法
84.Python3 expandtabs()方法
85.Python3 endswith()方法
86.Python3 encode()方法
87.Python3 bytes.decode()方法
88.Python3 maketrans()方法
89.Python3 lstrip()方法
90.Python3 lower()方法
91.Python3 len()方法
92.Python3 ljust()方法
93.Python3 join()方法
94.Python3 isupper()方法
95.Python3 istitle()方法
96.Python3 isspace()方法
97.Python3 isnumeric()方法
98.Python3 startswith()方法
99.Python3 splitlines()方法
100.Python3 split() 方法