import pymongo
import datetime
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
print('数据表有:', myclient.list_database_names()) # 列出数据表
count = myclient["ankus_xlgui"]["wxids"].count_documents({}) # 统计表中有多少条数据
print("微信好友人数", count)
def insertonevalue(): # 插入一条数据
mydb = myclient["ankus_xlgui"]
mycol = mydb["tasks"]
mydict = {
"wxid": "wxid_1042150421314",
"trigger": "dc:dailycheck",
"module_func": "dailycheck.dailycheck()",
"runtime": "8:40",
"cycle": "24",
"creator": "admin",
"create_time": datetime.datetime.now(),
"status": True
}
# 可以往一张表中插入不同字段的数据
x = mycol.insert_one(mydict)
print(x)
# insertonevalue()
def insertmanyvalue(): # 插入多条数据
mydb = myclient["runoobdb"]
mycol = mydb["sites"]
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)
# 输出插入的所有文档对应的 _id 值
print(x.inserted_ids)
# insertmanyvalue()
def selectont(): # 查询一条数据
mydb = myclient["ankus_xlgui"]
mycol = mydb["trigger_task"]
x = mycol.find_one()
print(x['trigger'])
# selectont()
def selectall(db, table): # 查询所有数据
mydb = myclient[db] # 选择数据库
mycol = mydb[table] # 选择数据表
for x in mycol.find({}, {"_id": 0, "send_time": 1}):
send_time = x["send_time"]
print(type(send_time), send_time)
# selectall("ankus_xlgui", "send_msg")
def selectappoint(): # 查询指定字段的数据
mycol = myclient["ankus_xlgui"]['tasks']
# 使用find()方法来查询指定字段的数据,将要返回的字段对应值设置为1。
# 不取出字段_id, 取出字段name和alexa, 注意有些记录可能为空
for x in mycol.find():
print(x.get("trigger"))
# 注意, 在一次筛选中如果要一部分字段不要另一部分字段, 只需要写那些要的字段为1
# 错误写法 要name不要url for x in mycol.find({}, {"_id": 0, "name": 1, "url": 0}):
# 报错 pymongo.errors.OperationFailure
# 所有某些字段不要就不要写!除了_id:0
# selectappoint()
def selectByName(): # 根据指定条件查询
mydb = myclient["runoobdb"]
mycol = mydb["sites"]
# 选择name为RUNOOB的记录, 再取出它的name和url字段
mydoc = mycol.find({"name": "RUNOOB"}, {"name": 1, "url": 1, "_id": 0})
for x in mydoc:
print(x)
# selectByName()
# 高级查询
def senior():
mydb = myclient["runoobdb"]
mycol = mydb["sites"]
# 读取 name 字段中第一个字母 ASCII 值大于 "H" 的数据,大于的修饰符条件为 {"$gt": "H"} :
myquery = {"name": {"$gt": "H"}}
mydoc = mycol.find(myquery, {"_id": 0, "name": 1})
for x in mydoc:
print(x)
# senior()
def seniorREX(): # 使用正则表达式
mydb = myclient["runoobdb"]
mycol = mydb["sites"]
myquery = {"name": {"$regex": "^R"}}
mydoc = mycol.find(myquery)
for x in mydoc:
print(x)
# seniorREX()
def seniorLimit(): # 返回指定条数记录
mydb = myclient["runoobdb"]
mycol = mydb['sites']
for x in mycol.find({}, {}).limit(3):
print(x)
# seniorLimit()
myclient.close()
"""在mycol.find({}, {})中, 第一个{}是对字段的高级搜索, 例如可以对字段name进行精确查找和模糊查找(ASCII, REX)
第二个{}, 表示查找的结果要输出哪些字段, 要的字段为键,值为1,不要就不写
"""
mongo学习
最新推荐文章于 2022-03-14 21:48:55 发布