python操作mongodb数据库-查询集合数据
python操作mongodb数据库-查询集合数据
·
查询集合中第一个条数据
使用 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大数据感兴趣的朋友欢迎一起讨论、交流,请多指教!
更多推荐
所有评论(0)