python mongodb 练习记录。

it2026-01-26  7

个人练习记录,看着菜鸟教程python mongodb,练习了一波。参考菜鸟教程文档。

‘’‘1、数据库创建、查看’’’

import pymongo myclient = pymongo.MongoClient("mongodb://127.0.0.1:27017/") #创建一个数据库 mydb = myclient['connDB'] #在 MongoDB 中,数据库只有在内容插入后才会创建! #获取所有数据库列表 dblist = myclient.list_database_names() #获取所有数据库 #判断一个数据库是否存在 if 'connDB' in dblist: print("此数据库存在")

‘’‘2、集合创建、查看’’’

#创建一个集合 import pymongo myclient = pymongo.MongoClient("mongodb://127.0.0.1:27017/") mycol = mydb['connCol'] #在 MongoDB 中,集合只有在内容插入后才会创建! #查看某个数据库下的所有集合 mydb = myclient['connDB'] collist = mydb.list_collection_names() #获取所有的集合 #判断一个集合是否存在 if 'connCol' in collist: print("此集合存在")

‘’’--------------------------------插入数据--------------------------------------’’’ ‘’‘3、插入数据(insert_one(),insert_many())’’’ #insert_one(): insert_one() 方法返回 InsertOneResult 对象, #该对象包含 inserted_id 属性,它是插入文档的 id 值。

import pymongo myclient = pymongo.MongoClient("mongodb://127.0.0.1:27017/") mycol = mydb['connCol'] mydict = {"name":"RUNOOB", "alexa":"10000", "url":"https://www.runoob.com"} x = mycol.insert_one(mydict) print(x.inserted_id) #打印插入文档的id值。5f90e85bc4673b1df18a4ec1 print(mydict) #mydict会增加('_id')字段。 #insert_many(): insert_many() 方法返回 InsertManyResult 对象, #该对象包含 inserted_ids 属性,该属性保存着所有插入文档的 id 值。 dicts = [{"name":"RUNOOB", "alexa":"100", "url":"https://www.runoob.com"},\ {"name":"QQ", "alexa":"101", "url":"https://www.qq.com"},\ {"name":"Facebook", "alexa":"10", "url":"https://www.facebook.com"}] z = mycol.insert_many(dicts) print(z) #打印插入的全部数据,包括_id print(z.inserted_ids) #打印插入文档的id值。[ObjectId('5f90e85bc4673b1df18a4ec2'), ..., ObjectId('5f90e85bc4673b1df18a4ec4')] #插入指定_id的多个文档。 mydb = myclient['connDB'] mycol = mydb['site2'] mylist = [{"_id":1,"name":"RUNOOB", "cn_name":"菜鸟教程"},\ {"_id":2,"name":"Google", "address":"dfafdafd"}] x = mycol.insert_many(mylist) print(x.inserted_ids) #[1, 2]

‘’’----------------------------------查询文档----------------------------------------’’’

import pymongo myclient = pymongo.MongoClient("mongodb://127.0.0.1:27017/") mydb = myclient['connDB'] mycol = mydb["connCol"] #find_one():查询一条记录 x = mycol.find_one() print(x) #{'_id': 1, 'name': 'RUNOOB', 'cn_name': '菜鸟教程'} #find():可以查询集合中的所有数据 for x in mycol.find(): print(x) #循环打印全部数据

‘’’ (1)查询指定字段的数据: find() 方法来查询指定字段的数据,将要返回的字段对应值设置为 1。 除了 _id 你不能在一个对象中同时指定 0 和 1,如果你设置了一个字段为 0,则其他都为 1,反之亦然。 简而言之,你指定某个字段(_id除外)为0,则其他字段不能指定为1(默认全部返回)。 指定某个字段(_id除外)为1,则其他字段不能再指定0(默认全部不返回)。 如果指定字段(_id除外),某字段为0,另外字段为1,则报错,因为剩下字段是否返回将无法确定。 ‘’’

for x in mycol.find({},{'name':0}): print(x) #不返回name,其他返回(包括_id) for x in mycol.find({},{'_id':0,"name":1,"alexa":1}): print(x) #返回name,alexa,不返回_id和其他字段。 # #错误: # for x in mycol.find({},{'name':0,'alexa':1}): # print(x) '''(2)根据指定条件查询''' #find() 中设置参数来过滤数据。 myquery = {"name":"RUNOOB"} mydoc = mycol.find(myquery) #查找 name 字段为 "RUNOOB" 的数据 for x in mydoc: print(x)

‘’’(3)高级查询:使用修饰符’’’

myquery = {"name":{"$gt": "H"}} mydoc = mycol.find(myquery) #读取 name 字段中第一个字母 ASCII 值大于 "H" 的数据 for x in mydoc: print(x)

‘’‘使用正则表达式查询’’’

#正则表达式修饰符只用于搜索字符串的字段。正则表达式修饰符条件为 {"$regex": "^R"} myquery = {"name":{"$regex":"^R"}} #读取 name 字段中第一个字母为 "R" 的数据 mydoc = mycol.find(myquery) for x in mydoc: print(x) '''返回指定条数记录:limit()''' myresults = mycol.find().limit(3) for x in myresults: print(x)

‘’’-------------------------------------------------修改文档---------------------------------------------------------------’’’

import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient['connDB'] mycol = mydb['connCol'] myquery = {"alexa":"10000"} newvalues = {"$set": {"alexa":"12345"}} #update_one() mycol.update_one(myquery, newvalues) #update_one()方法修改匹配到的第一条记录 for x in mycol.find(): print(x) #update_many() myquery2 = {"name":{"$regex":"^R"}} #查找所有以 R开头的 name 字段,并将匹配到所有记录的 alexa 字段修改为 123 newvalues2 = {"$set": {"alexa": "123"}} x=mycol.update_many(myquery2, newvalues2) #查看修改的个数: print(x.modified_count, "文档已修改")

‘’’-----------------------------------------------删除数据-------------------------’’’

import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient['connDB'] mycol = mydb['connCol'] #delete_one():删除一个文档 myquery = {"name": "RUNOOB"} mycol.delete_one(myquery) for x in mycol.find(): print(x) #delete_many():删除多个文档 myquery2 = {"name": {"$regex":"^R"}} x = mycol.delete_many(myquery2) #查看删除的个数 print(x.deleted_count, "文档已删除") #delete_many({}):删除集合中的所有文档 x = mycol.delete_many({}) print(x.deleted_count, "个文档已删除")

‘’’-------------------------------------------文档排序----------------------------’’’ ‘’’ sort() 方法可以指定升序或降序排序。 sort() 方法第一个参数为要排序的字段,第二个字段指定排序规则,1 为升序,-1 为降序,默认为升序。 ‘’’

import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["connDB"] mycol = mydb["connCol"] #sort(),默认升序 mydoc = mycol.find().sort("alexa") for x in mydoc: print(x) #倒序排序 mydoc2 = mycol.find().sort("alexa", -1) for x in mydoc2: print(x)
最新回复(0)