python操作mongodb

import pymongo

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

# -------------------------------------------添加----------------------------------------#

# mydict = {‘name‘: ‘practice‘, ‘alexa‘: ‘10000‘, ‘url‘: ‘https://www.baidu.com‘}
# x = mycol.insert_one(mydict)
# 插入单条数据
# print(x.inserted_id)
# 输出插入的所有文档对应的 _id 值

# mylist = [
#     {"name": "Taobao", "alexa": "100", "url": "https://www.taobao.com"},
#     {"name": "QQ", "alexa": "101", "url": "https://www.qq.com"},
#     {"name": "Facebook", "alexa": "10", "url": "https://www.facebook.com"},
#     {"name": "知乎", "alexa": "103", "url": "https://www.zhihu.com"},
#     {"name": "Github", "alexa": "109", "url": "https://www.github.com"}
# ]
# # x = mycol.insert_many(mylist)
# 插入多条数据
# print(x.inserted_ids)
# 输出插入的所有文档对应的 _id 值


# ------------------------------------------查询------------------------------------#
# x = mycol.find_one()
# print(x)
# 查询单条数据

# for x in mycol.find():
#   print(x)
# 查询多条数据

# for x in mycol.find({}, {"_id": 0, "name": 1, "alexa": 1}):
#     print(x)
# 可以使用 find() 方法来查询指定字段的数据,将要返回的字段对应值设置为 1。

# 以下实例除了 alexa 字段外,其他都返回:
# for x in mycol.find({}, {"alexa": 0}):
#     print(x)
# 除了 _id 你不能在一个对象中同时指定 0 和 1,如果你设置了一个字段为 0,则其他都为 1,反之亦然。

# myquery = {"name": "practice"}
# mydoc = mycol.find(myquery)
# for x in mydoc:
#     print(x)
# 根据指定条件查询, find() 中设置参数来过滤数据。

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

# myquery = {"name": {"$regex": "^p"}}
# mydoc = mycol.find(myquery)
# for x in mydoc:
#     print(x)
# 正则表达式修饰符只用于搜索字符串的字段。
# 以下实例用于读取 name 字段中第一个字母为 "R" 的数据,正则表达式修饰符条件为 {"$regex": "^R"}

# myresult = mycol.find().limit(3)
# 输出结果
# for x in myresult:
#     print(x)
# 查询结果设置指定条数的记录可以使用 limit() 方法,该方法只接受一个数字参数。


# ---------------------------------------------修改------------------------------------------#
# myquery = {"alexa": "10000"}
# newvalues = {"$set": {"alexa": "12345"}}
# mycol.update_one(myquery, newvalues)
# 修改一个,update_one输出修改后的  "sites"  集合
# for x in mycol.find():
#     print(x)

# update_one() 方法只能修匹配到的第一条记录,如果要修改所有匹配到的记录,可以使用 update_many()。
# 以下实例将查找所有以 F 开头的 name 字段,并将匹配到所有记录的 alexa 字段修改为 123:
# myquery = {‘name‘: {‘$regex‘: ‘^F‘}}
# newvalues = {‘$set‘: {‘alexa‘: ‘153‘}}
# x = mycol.update_many(myquery, newvalues)
# 输出修改后的  "sites"  集合
# print(x.modified_count, "文档已修改")
# modified_count统计修改的数目


# --------------------------------------------排序------------------------------------------#
# mydoc = mycol.find().sort("alexa")
# for x in mydoc:
#     print(x)
# find().sort()默认用来升序排序,

# mydoc = mycol.find().sort("alexa", -1)
# for x in mydoc:
#     print(x)
# find().sort(,-1)用来降序排序,


# --------------------------------------------删除------------------------------------------#
# myquery = {"name": "Taobao"}
# mycol.delete_one(myquery)
# delete_one,删除一个删除后输出
# for x in mycol.find():
#     print(x)

myquery = {"name": {"$regex": "^F"}}
x = mycol.delete_many(myquery)
print(x.deleted_count, "个文档已删除")
# delete_many删除所有 name 字段中以 F 开头的文档
# x = mycol.delete_many({})
# print(x.deleted_count, "个文、档已删除")
# delete_many() 方法如果传入的是一个空的查询对象,则会删除集合中的所有文档
# mycol.drop()
# drop()方法来删除一个集合。

相关推荐