查询集合中第一个条数据

使用 find_one() 方法来查询集合中的一个文档数据。

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")    # 连接数据库
mydb = myclient["test"]     # 指定数据库
mycol = mydb["sites"]       # 指定集合

x = mycol.find_one()    # 查询集合中第一条数据

print(x)    # 输出

查询集合中所有数据

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

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["test"]
mycol = mydb["sites"]

for x in mycol.find():  # 查询集合中所有文档数据并且遍历
    print(x)            # 输出

 输出:

查询指定字段的数据

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

不需要返回的字段可以不设置,_id字段默认值为1。

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

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["test"]
mycol = mydb["sites"]

print('打印集合中所有数据')
for x in mycol.find():
    print(x)
print('打印集合中指定字段数据')
# _id默认为1,指定为0就不会查询到这个字段了,只查询到alexa这个字段
for x in mycol.find({}, {"_id":0,"alexa": 1}): 
    print(x)

 输出:

根据指定条件查询集合数据

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

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["test"]
mycol = mydb["sites"]

myquery = {"name": "淘宝"}

mydoc = mycol.find(myquery)

for x in mydoc:     # 输出查询到的集合数据
    print(x)

输出:

 高级筛选

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["test"]
mycol = mydb["sites"]

print('过滤前输出')
for x in mycol.find():
    print(x)

# 读取 name 字段中第一个字母 ASCII 值大于 "H" 的数据,大于的修饰符条件为 {"$gt": "H"} :
myquery = {"name": {"$gt": "H"}}     # gt:大于,lt:小于,eq:等于

mydoc = mycol.find(myquery)
print('过滤后输出')
for x in mydoc:
    print(x)

输出:

使用正则表达式查询

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

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

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

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["test"]
mycol = mydb["sites"]

print('过滤前输出')
for x in mycol.find():
    print(x)

myquery = {"name": {"$regex": "^F"}}        # 筛选条件

mydoc = mycol.find(myquery)            # 过滤

print('正则过滤后输出')
for x in mydoc:
    print(x)

输出:

 返回指定条数记录

指定条数的记录可以使用 limit() 方法,该方法只接受一个数字参数。

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["test"]
mycol = mydb["sites"]

myresult = mycol.find().limit(2)        # 指定返回2条数据

print('输出')
for x in myresult:
    print(x)

输出:

打卡第52天,对python大数据感兴趣的朋友欢迎一起讨论、交流,请多指教!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐