pymongo使用
创建对象
# 导入模块 import pymongo
# 创建mongodb客户端对象 mongo_con = pymongo.MongoClient("mongodb://admin:admin888@192.168.1.999:27017/") # 指定mongodb需要操作的数据库(两种方法均可) db = mongo_con.test # db = mongo_con['test']
C增加 insert()
# 向c1集合中插入单条文档数据 data1 = {"name": "baidu", "alexa": "99", "url": "https://www.baidu.com"} x = db.c1.insert_one(data1) # 返回插入文档_id print(x.inserted_id)
结果:

# 向c1集合中插入多条文档数据 data2 = [ { "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 = db.c1.insert_many(data2) # 返回插入文档_id的列表 print(x.inserted_ids)
结果:

# R查 find()
# 查询c1集合中的所有文档(两种方法均可) # for x in db.c1.find(): # print(x) for x in db['c1'].find(): print(x)
结果:

# 查询test数据库中所有的集合名称 collist = db.list_collection_names() for collection in collist: print(collection)
结果:

# 根据条件查询(正则($regex),大小($gt,$lt),包括($in),不包括($nin)) # myquery = {'name': 'QQ'} # myquery = {'name': {"$gt": "H"}} # myquery = {'age': {"$gt": 5}} myquery = {'name': {"$regex": r"^Q"}} for doc in db.c1.find(myquery): print(doc)
结果:

# 查询返回指定字段,在find()函数,第二个参数传入键值对,键为字段,值为0或1; # 返回字段的值可同时为1或者0(_id字段除外) for doc in db.c1.find({}, {"_id":0 ,"name": 1, "url": 1}): print(doc) for doc in db.c1.find({}, {"_id":0 ,"name": 0, "url": 0}): print(doc)
结果:

# 当除_id字段的其他字段出现值不相同时报错 for doc in db.c1.find({}, {"_id":0 ,"name": 1, "url": 0}): print(doc)
报错:pymongo.errors.OperationFailure: database error: Can't canonicalize query: BadValue Projection cannot have a mix of inclusion and exclusion., full error: {'$err': "Can't canonicalize query: BadValue Projection cannot have a mix of inclusion and exclusion.", 'code': 17287, 'ok': 0}
结果:

# 限制输出文档数 for doc in db.c1.find().limit(3): print(doc)
结果:

#跳过几个文档输出 for doc in db.c1.find().skip(3): print(doc)
结果:

# 根据条件排序输出,第一参数为键名,第二个参数为值得排列顺序,1为升序,-1为降序 for doc in db.c1.find().sort('name', -1): print(doc)
结果:

# U改 update()
# 修改一个文档 db.c1.update_one({"name": "baidu"}, {"$set": {"name": "百度"}})
结果:

# 修改多个文档 x = db.c1.update_many({"alexa": {"$regex": r"^3"}}, {"$set": {"alexa": "200"}}) print(x.modified_count)
结果:

| 作用 | |
|---|---|
| $inc | 递增 |
| $rename | 重命名列 |
| $set | 修改列值 |
| $unset |
# D删除 remove()
# 删除一个指定文档 db.c1.delete_one({'name': '百度'})
# myquery = {'age': {'$gt': 10}}还可配合运算符使用
结果:

# 删除c1集合中所有文档 x = db.c1.delete_many({}) # 返回删除数量 print(x.deleted_count)
结果:

# 删除c1集合 db.c1.drop()
壬戌之秋,七月既望,苏子与客泛舟游于赤壁之下。清风徐来,水波不兴。举酒属客,诵明月之诗,歌窈窕之章。少焉,月出于东山之上,徘徊于斗牛之间。白露横江,水光接天。纵一苇之所如,凌万顷之茫然。浩浩乎如冯虚御风,而不知其所止;飘飘乎如遗世独立,羽化而登仙。
于是饮酒乐甚,扣舷而歌之。歌曰:“桂棹兮兰桨,击空明兮溯流光。渺渺兮予怀,望美人兮天一方。”客有吹洞箫者,倚歌而和之。其声呜呜然,如怨如慕,如泣如诉,余音袅袅,不绝如缕。舞幽壑之潜蛟,泣孤舟之嫠妇。
苏子愀然,正襟危坐而问客曰:“何为其然也?”客曰:“月明星稀,乌鹊南飞,此非曹孟德之诗乎?西望夏口,东望武昌,山川相缪,郁乎苍苍,此非孟德之困于周郎者乎?方其破荆州,下江陵,顺流而东也,舳舻千里,旌旗蔽空,酾酒临江,横槊赋诗,固一世之雄也,而今安在哉?况吾与子渔樵于江渚之上,侣鱼虾而友麋鹿,驾一叶之扁舟,举匏樽以相属。寄蜉蝣于天地,渺沧海之一粟。哀吾生之须臾,羡长江之无穷。挟飞仙以遨游,抱明月而长终。知不可乎骤得,托遗响于悲风。”
苏子曰:“客亦知夫水与月乎?逝者如斯,而未尝往也;盈虚者如彼,而卒莫消长也。盖将自其变者而观之,则天地曾不能以一瞬;自其不变者而观之,则物与我皆无尽也,而又何羡乎!且夫天地之间,物各有主,苟非吾之所有,虽一毫而莫取。惟江上之清风,与山间之明月,耳得之而为声,目遇之而成色,取之无禁,用之不竭,是造物者之无尽藏也,而吾与子之所共适。”
客喜而笑,洗盏更酌。肴核既尽,杯盘狼籍。相与枕藉乎舟中,不知东方之既白。

浙公网安备 33010602011771号