import pymongo  #pip install pymongo安装python操作mongodb的模块
myclient=pymongo.MongoClient(host='127.0.0.1',port=27017) #指定主机和端口号创建客户端 dblist=myclient.list_database_names() #查看MongoDB中存在的数据库
print(dblist) mydb=myclient['dbtest']#数据库使用:有则直接使用,没有的话数据库只有在内容插入后才会自动创建!
print(mydb) collist = mydb. list_collection_names()#查看当前数据库中的表
print(collist) mycol=mydb['t1']#表(集合)使用:有则直接使用,没有的话集合只有在内容插入后才会创建!
print(mycol) #MongoDB中数据表的操作: # 1.添加数据
'''
添加数据:
(1)insert()----单条和多条插入:MongoDB3.2版本自之前
db.collection.insert({})
db.collection.insert([{},{}...])
(2)3.2之后官方推荐:
insert_one()----单条插入
db.collection.insert_one({})
insert_many()----多条插入
db.collection.insert_many([{},{}...])
'''
#
# res1=mycol.insert([{'name':'a','age':20,'gender':1}])
# print(res1)
# res2=mycol.insert([{'name':'b','age':21,'gender':0},{'name':'c'}])
# print(res2) mydict = { "name": "Google", "alexa": "", "url": "https://www.google.com" }
mylist = [
{ "name": "Taobao", "alexa": "", "url": "https://www.taobao.com" },
{ "name": "QQ", "alexa": "", "url": "https://www.qq.com" },
{ "name": "Facebook", "alexa": "", "url": "https://www.facebook.com" },
{ "name": "知乎", "alexa": "", "url": "https://www.zhihu.com" },
{ "name": "Github", "alexa": "", "url": "https://www.github.com" }
]
# res3=mycol.insert_one(mydict)
# print(res3)
# res4=mycol.insert_many(mylist)
# print(res4) #2.查询数据
'''
查询数据:
(1)find()----查询符合条件的所有数据
db.collection.find(查询条件)
(2)find_one()----查询符合条件的第一条数据
db.collection.find_one(查询条件)
''' all=mycol.find()
# all=mycol.find({'age':21})
print(all)
for doc in all:
print(doc) # one=mycol.find_one()
# one=mycol.find_one({'age':21})
# print(one) #3.修改数据(不存在即创建)
'''
(1)update()---只能修改查询出的第一条数据
db.coolection.update({查询条件},{$修改器:{修改值}})
修改器:认定当前修改的类型 $set设置类型修改器 强制修改某字段的值
(2)3.2之后官方推荐:
update_one()----修改查询结果的第一条数据
db.colleciton.update_one({查询条件},{$修改器:{修改值}})
update_many()----修改查询结果所有数据
db.colleciton.update_many({查询条件},{$修改器:{修改值}})
'''
# res5=mycol.update({'name':'c'},{'$set':{'age':23}})
# print(res5) # res6=mycol.update_one({'name':'d'},{'$set':{'age':30,'gender':1}})
# print(res6)
# res7=mycol.update_many({'name':'d'},{'$set':{'age':22}})
# print(res7) #4.删除数据
'''
(1)remove()----不在推荐使用
db.collection.remove(查询条件)----删除符合查询结果的所有数据
(2)3.2之后官方推荐:
delete_one()----删除查询结果的第一条数据
db.colleciton.delete_one(查询条件)
delete_many()----删除查询结果的所有数据
db.colleciton.delete_many(查询条件)
'''
# res8=mycol.remove({'age':22})
# print(res8) # res9=mycol.delete_one({'name':'c'})
# print(res9) # res10=mycol.delete_many({'name':'a'})
# print(res10) #5.数据排序+跳跃+范围
'''
对查询结果进行排序、跳跃取值、范围截取 (1)sort(filed,pymongo.ASCENDING/pymongo.DESCENDING)----对查询结果升序/降序排序
db.collection.find({}).sort()
(2)skip(num)----对查询结果进行跳跃取值
db.collection.find({}).skip()
(3)limit(num)----对查询结果进行范围截取
db.collection.find({}).limit()
(4)优先级:sort>skip>limit,与使用时的顺序无关
db.collection.find({}).sort().skip().limit()
db.collection.find({}).limit().sort().skip()
db.collection.find({}).skip().sort().limit()
'''
print('----------------------------')
alldata1=mycol.find({}).sort('age',pymongo.ASCENDING)#升序
for i in alldata1:
print(i)
print('----------------------------')
alldata2=mycol.find({}).skip(8)
for i in alldata2:
print(i)
print('----------------------------')
alldata3=mycol.find({}).limit(2)
for i in alldata3:
print(i) #6.查询关键字
'''
(1)$and----并列查询
db.collection.find({'$and':[{},{}...]})
(2)$or----或条件查询
db.collection.find({'$or':[{},{}...]})
(3)$in----范围查询
db.collection.find({field:{'$in':['',''...]}})
(4)$all----子集查询
db.collection.find({field:{'$all':['',''...]}})
''' print('+++++++++++++++++++++++++++++++')
res11=mycol.find({"name":'c'})
for i in res11:
print(i) print('+++++++++++++++++++++++++++++++')
res12=mycol.find({'$and':[{'name':'c'},{'age':20}]})
for i in res12:
print(i) print('+++++++++++++++++++++++++++++++')
res13=mycol.find({'$or':[{'name':'c'},{'name':'b'}]})
for i in res13:
print(i) print('+++++++++++++++++++++++++++++++')
res14=mycol.find({'name':{'$in':['c','b']}})
for i in res14:
print(i) print('+++++++++++++++++++++++++++++++')
# res15=mycol.find({'hobby':{'$all':['run','eat','swim']}})
res15=mycol.find({'hobby':{'$all':['run','eat']}})
for i in res15:
print(i) #7.查询条件操作符(一般用于数字比较)
'''
(1)$lt----小于
db.collection.find({field:{'$lt':value}})
(2)$gt----大于
db.collection.find({field:{'$gt':value}})
(3)$eq----等于
db.collection.find({field:{'$eq':value}})
(4)$lte----小于等于
db.collection.find({field:{'$lte':value}})
(5)$gte----大于等于
db.collection.find({field:{'$gte':value}})
(6)$ne----不等于
db.collection.find({field:{'$ne':value}})
''' # mycol.insert_many([{'name':'d','age':18},{'name':'e','age':22},{'name':'f','age':32},])
print("**************************************")
res16=mycol.find({'age':{'$lt':21}})
for i in res16:
print(i) print("**************************************")
res17=mycol.find({'age':{'$gt':21}})
for i in res17:
print(i) print("**************************************")
res18=mycol.find({'age':{'$eq':21}})
for i in res18:
print(i)
print("**************************************")
res19=mycol.find({'age':{'$lte':21}})
for i in res19:
print(i) print("**************************************")
res20=mycol.find({'age':{'$gte':21}})
for i in res20:
print(i) print("**************************************")
res21=mycol.find({'age':{'$ne':21}})
for i in res21:
print(i) #8.$修改器 + $ 字符特殊用法
'''
(1)$set----修改某个字段的值
(2)$unset---删除字段
(3)$inc----引用增加(先引用 后增加)
(4)针对数组操作:
①$push----在Array的最后一个位置中增加一个数据
②$pushAll----在Array的最后一个位置中增加多个数据
③$pull ----删除Array中的指定单个元素
④$pullAll ----删除Array中的指定多个元素
⑤$pop----删除Array中的第一个或者最后一个元素 正数是倒序删除 负数是正序删除
⑥$----存储当前(Array)符合条件的元素下标索引 ,只能存储最外层的 索引位置
'''
# mycol.update_one({'name':'c','age':20},{'$set':{'hobby':['swim,dump','sing']}})
# mycol.update_one({'$and':[{'name':'c'},{'age':20}]},{"$unset":{'hobby':[1,2]}})
# mycol.update_many({'name':{'$in':['d','e','f']}},{'$inc':{'age':2}})
# mycol.update_one({'name':'b'},{'$push':{'hobby':['swim','sing']}}) # mycol.update({'name':'c'},{'$pushAll':{'hobby':['sing','scrapy']}})#实际测试无法使用,报错:Unknown modifier: $pushAll
# mycol.update_many({'name':'b'},{'$pullAll':{'hobby':['swim','play']}})#实际测试每次只删除一个元素 # mycol.update_one({'hobby':'run'},{'$pull':{'hobby':'eat'}})
# mycol.update_many({'hobby':'run'},{'$pop':{'hobby':1}})
# mycol.update_many({'hobby':'run'},{'$pop':{'hobby':-1}}) # mycol.update_many({'name':'c','age':{'$ne':20}},{'$set':{'hobby':['swim','sing']}})
# mycol.update_many({'hobby':'run'},{'$push':{'hobby':'swim'}})

Python操作MongoDB代码示例的更多相关文章

  1. python操作三大主流数据库(9)python操作mongodb数据库③mongodb odm模型mongoengine的使用

    python操作mongodb数据库③mongodb odm模型mongoengine的使用 文档:http://mongoengine-odm.readthedocs.io/guide/ 安装pip ...

  2. 使用Python操作MongoDB

    MongoDB简介(摘自:http://www.runoob.com/mongodb/mongodb-intro.html) MongoDB 由C++语言编写,是一个基于分布式文件存储的开源数据库系统 ...

  3. python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战

    python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...

  4. python 操作mongoDB数据库

    网上关于python 操作mongoDB的相关文章相对不是很多,并且质量也不是很高!下面给出一个完整的 增删改查示例程序! #!/usr/bin/python # -*- coding: utf-8 ...

  5. 【转】Python操作MongoDB

    Python 操作 MongoDB   请给作者点赞--> 原文链接 这篇文章主要介绍了使用Python脚本操作MongoDB的教程,MongoDB作为非关系型数据库得到了很大的宣传力度,而市面 ...

  6. python操作mongodb根据_id查询数据的实现方法

    python操作mongodb根据_id查询数据的实现方法   python操作mongodb根据_id查询数据的实现方法,实例分析了Python根据pymongo不同版本操作ObjectId的技巧, ...

  7. MongoDB学习笔记:Python 操作MongoDB

    MongoDB学习笔记:Python 操作MongoDB   Pymongo 安装 安装pymongopip install pymongoPyMongo是驱动程序,使python程序能够使用Mong ...

  8. Python 操作 mongodb 数据库

    原文地址:https://serholiu.com/python-mongodb 这几天在学习Python Web开发,于 是做准备做一个博客来练练手,当然,只是练手的,博客界有WordPress这样 ...

  9. python操作mongodb

    # python操作mongodb # 首先,引入第三方模块pymongo,该模块是python用来操作mongodb的 import pymongo # 第二步,设置ip地址,以及表格名称,表格名字 ...

随机推荐

  1. union 的概念及在嵌入式编程中的应用

    union 概念 union 在中文的叫法中又被称为共用体,联合或者联合体,它定义的方式与 struct 是相同的,但是意义却与 struct 完全不同,下面是 union 的定义格式: union ...

  2. Libra教程之:来了,你最爱的Move语言

    文章目录 Move语言 Move的核心概念 Move交易脚本 Move modules Move resources 写一个Move程序 编写交易脚本 编写自己的Modules Move语言 Move ...

  3. 6.Python中内存是如何管理的?

    Python中内存是如何管理的? Python memory is managed by Python private heap space. All Python objects and data ...

  4. redhat7.3 dns服务器配置

    1.基本配置 systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0 nmcli conne ...

  5. 【10月新版】Aspose.Pdf 10月新版V17.10发布 | 附下载

    2019独角兽企业重金招聘Python工程师标准>>> Aspose.Pdf for .NET 17.10 更新 功能和改进 核心 概述 类别 PDFNET-38067 支持DICO ...

  6. Computational Geometry

    矩形重叠 看过某司一道笔试题:给\(n\)个矩形左下和右上坐标(不能斜放),求重叠最多处矩形个数. 这道题本身不难:可以遍历所有矩形边界组成的点,计算该点被多少矩形包围,从而选出最大值. 由此引申出一 ...

  7. CF--思维练习--CodeForces - 221C-H - Little Elephant and Problem (思维)

    ACM思维题训练集合 The Little Elephant has got a problem - somebody has been touching his sorted by non-decr ...

  8. 4)drf序列化组件 Serializer(偏底层)、ModelSerializer(重点)、ListModelSerializer(辅助群改)

    知识点:Serializer(偏底层).ModelSerializer(重点).ListModelSerializer(辅助群改) 一.Serializer 偏底层 一般不用 理解原理 1.序列化准备 ...

  9. 如何使用thrift 服务引擎组件

    在本文中将介绍如果通过thrift 组件集成到surging 微服务引擎中,然后可以选择dotnetty 或thrift作为服务远程调用RPC,也可以通过其它语言的thrift 调用surging 服 ...

  10. 细说 PEP 468: Preserving Keyword Argument Order

    细说 PEP 468: Preserving Keyword Argument Order Python 3.6.0 版本对字典做了优化,新的字典速度更快,占用内存更少,非常神奇.从网上找了资料来看, ...