python mongodb 练习记录。

个人练习记录,看着菜鸟教程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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值