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. 文件上传漏洞(pikachu)

    文件上传漏洞 文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像,附件等等.当用户点击上传按钮后,后台会对上传的文件进行判断,比如是否是指定的类型.后缀名.大小等等,然后将其按照设 ...

  2. cocos2dx初体验

    我们创建工程后总会自带一个HelloWorld类,短短的几行代码就出来了一个游戏的雏形,请问我们真的理解它了吗?如果我们能早一点弄明白这几行代码,我们或许会比现在走得更远. 理解HelloWorld类 ...

  3. java关于throw Exception的一个小秘密

    目录 简介 throw小诀窍 总结 java关于throw Exception的一个小秘密 简介 之前的文章我们讲到,在stream中处理异常,需要将checked exception转换为unche ...

  4. Spring Boot @EnableAutoConfiguration和 @Configuration的区别

    Spring Boot @EnableAutoConfiguration和 @Configuration的区别 在Spring Boot中,我们会使用@SpringBootApplication来开启 ...

  5. hdu_2570 迷障 贪心

    迷瘴 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  6. Vue Cli 3 打包上线 部署到Apache Tomcat服务器

    使用 npm run build 打包项目 在根目录中有一个dist文件夹 我使用的服务器是 Apache  Tomcat 把项目放进tomcat /webapps 中 启动服务器 <mac O ...

  7. CSS开发技巧(三):图片点击缩放

    前言  利用CSS实现图片的点击缩放是一个很值得研究的效果.在某些业务需求场景中,我们可能并没有足够的空间展示过大的图片,这就需要限制图片容器的宽度和高度.然而图片限制了宽度,一些图片的细节便又无法看 ...

  8. 谈谈JavaScript中的变量、指针和引用

    1.变量 我们可能产生这样一个疑问:编程语言中的变量到底是什么意思呢? 事实上,当我们定义了一个变量a时,就是在存储器中指定了一组存储单元,并将这组存储单元命名为a.变量a的值实际上描述的是这组存储单 ...

  9. log4j MDC NDC详解

    NDC ( Nested Diagnostic Context )和 MDC ( Mapped Diagnostic Context )是 log4j 种非常有用的两个类,它们用于存储应用程序的上下文 ...

  10. 数学--数论--HDU 2136(素数筛选法)

    Everybody knows any number can be combined by the prime number. Now, your task is telling me what po ...