操作步骤:
  1. 连接数据库,生成数据库连接对象
    conn = pymongo.MongoClient('localhost',27017)
  2. 选择要操作的数据库,生成数据库对象 (__setitem__)
    db = conn.stu
    db = conn['stu']
  3. 获取集合对象
    myset = db.class
    myset = db['class']
  4. 通过集合对象调用mongodb数据库操作函数
    增删改查,聚合,索引。。。。。
  5. 关闭数据库连接
    conn.close()

--------------------------------------------------------------------------------------------------------------

插入文档:
  myset.insert() 插入数据 功能同 mongoshell
  myset.insert_many() 插入多条
  myset.insert_one() 插入一条
  myset.save() 插入数据,通过_id可以修改

----------------------------------------------------------------------------------------------------------------

查找操作:
  myset.find()
    功能 : 对数据库进行查找
    参数 : 同mongoshell find()
    返回值 : 返回游标对象 #返回是一个对象,因此可以进行for循环
  myset.find_one()        用法同mongoshell中 findOne()
    返回一个字典

由于myset.find()返回的是一个对象,因此含有next(),limit(),skip(),count()这几个方法。

但用着几个方法也是有限制的,如果之前用过了for循环的话,就不能在用这几个方法了

---------------------------------------------------------------------------------------------------------------------

修改操作:
update(query,update,upsert = False,multi = False)
update_many()
update_one()

--------------------------------------------------------------------------------------------------------------------

删除操作:
remove(query,multi = True)
  功能: 删除文档
  参数: query 筛选条件

    multi 默认True表示删除所有符合条件的,False只删除一条

  还有一种删除的方法,删除一条或者多条
  db.collection.delete_one(),db.collection.delete_many(),里面的参数可remove一样

----------------------------------------------------------------------------------------------------------------------

复合操作
  查找Role = 船长,并删除
  print(myset.find_one_and_delete({"Role":"船长"}))

from pymongo import MongoClient

#创建数据库连接对象
conn = MongoClient("localhost", ) #创建数据库对象
db = conn.stu
#db = conn["stu"] #创建集合对象
myset = db.class4 #数据操作
#print(dir(myset)) #查看对象方法 #添加 myset.insert({"name":"路飞","Role":"船长"})
myset.insert([{"name":"山治","Role":"厨师"},{"name":"罗","Role":"船长"}])
myset.insert_many([{"name":"娜美","Role":"掌舵手"},{"name":"大妈","Role":"四皇"}])
myset.insert_one({"name":"香克斯","Role":"四皇"})
myset.save({"_id":,"name":"黑胡子","Role":"船长"})
myset.save({"_id":,"name":"白胡子","Role":"船长"}) #查找 cursor = myset.find({"Role":{"$eq":"四皇"}},{"_id":})
print(cursor)
for i in cursor:
print(i["name"],"----",i["Role"]) dic = myset.find_one()
print(dic) #获取下一条数据
print(cursor.next())
print(cursor.next()) #显示第2条数据
for i in cursor.skip().limit():
print(i) #排序 for i in cursor.sort([("name",-)]):
print(i) query={"$or":[{"sex":"w"},{"age":{"$lt":""}}]}
cursor = myset.find(query ,{"_id":})
for i in cursor:
print(i) #修改操作
myset.update({"name":"zengsf"},{"$unset":{"sex":""}})
#同时修改多条文档
myset.update({"name":"zengsf"},{"$set":{"age":""}},multi = True)
#如果匹配文档不存在则插入
myset.update({"name":"骷髅"},{"$set":{"King":"武士"}},upsert = True) #删除
myset.remove({"name":"黑胡子"}) #复合操作
#查找King = 船长,并删除
print(myset.find_one_and_delete({"Role":"船长"})) #关闭连接
conn.close()

索引操作:
  ensure_index() 创建索引
  list_indexes() 查看索引
  drop_index() 删除一个索引
  drop_indexes() 删除所有索引

#创建一个正向索引
index = myset.ensure_index("name")
#创建一个逆向索引
index = myset.ensure_index([("age",-1)])
print(index) #获取当前集合中的索引
for i in myset.list_indexes():
print(i) #删除所有索引
myset.drop_indexes() #删除单个索引
myset.drop_index("age_-1") #其它索引类型
#创建复合索引
myset.ensure_index([("name",1),("age",1)]) #创建唯一索引
myset.ensure_index("name",name = "MyIndex",unique = True) #创建稀疏索引
myset.ensure_index("age",sparse = True)

--------------------------------------------------------------------------------------------------------------------

聚合操作

  aggregate([])
    参数和mongoshell一样
    返回值和find()函数一样也是得到一个游标对象

在python中的使用的更多相关文章

  1. [转]Python中的str与unicode处理方法

    早上被python的编码搞得抓耳挠腮,在搜资料的时候感觉这篇博文很不错,所以收藏在此. python2.x中处理中文,是一件头疼的事情.网上写这方面的文章,测次不齐,而且都会有点错误,所以在这里打算自 ...

  2. python中的Ellipsis

    ...在python中居然是个常量 print(...) # Ellipsis 看别人怎么装逼 https://www.keakon.net/2014/12/05/Python%E8%A3%85%E9 ...

  3. python中的默认参数

    https://eastlakeside.gitbooks.io/interpy-zh/content/Mutation/ 看下面的代码 def add_to(num, target=[]): tar ...

  4. Python中的类、对象、继承

    类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...

  5. python中的TypeError错误解决办法

    新手在学习python时候,会遇到很多的坑,下面来具体说说其中一个. 在使用python编写面向对象的程序时,新手可能遇到TypeError: this constructor takes no ar ...

  6. python中的迭代、生成器等等

    本人对编程语言实在是一窍不通啊...今天看了廖雪峰老师的关于迭代,迭代器,生成器,递归等等,word天,这都什么跟什么啊... 1.关于迭代 如果给定一个list或tuple,我们可以通过for循环来 ...

  7. python2.7高级编程 笔记二(Python中的描述符)

    Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装饰器(decorator).对于大部分特性来说,这些" ...

  8. python cookbook 学习系列(一) python中的装饰器

    简介 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓 ...

  9. 用 ElementTree 在 Python 中解析 XML

    用 ElementTree 在 Python 中解析 XML 原文: http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python- ...

  10. Python中操作mysql的pymysql模块详解

    Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...

随机推荐

  1. 《剑指offer》第十八题(删除链表中重复的结点)

    // 面试题18(二):删除链表中重复的结点 // 题目:在一个排序的链表中,如何删除重复的结点?例如,在图3.4(a)中重复 // 结点被删除之后,链表如图3.4(b)所示. #include &l ...

  2. Codeforces 847C - Sum of Nestings

    847C - Sum of Nestings 思路:简单的递归. 代码: #include<bits/stdc++.h> using namespace std; #define ll l ...

  3. 算法笔记--sg函数详解及其模板

    算法笔记 参考资料:https://wenku.baidu.com/view/25540742a8956bec0975e3a8.html sg函数大神详解:http://blog.csdn.net/l ...

  4. Java 常用对象-StringBuffer类

    2017-11-02 20:57:02 StringBuffer:线程安全的可变字符序列.一个类似于 String 的字符串缓冲区,但不能修改.虽然在任意时间点上它都包含某种特定的字符序列,但通过某些 ...

  5. [Java学习] java泛型通配符和类型参数的范围

    本节先讲解如何限制类型参数的范围,再讲解通配符(?). 类型参数的范围 在泛型中,如果不对类型参数加以限制,它就可以接受任意的数据类型,只要它是被定义过的.但是,很多时候我们只需要一部分数据类型就够了 ...

  6. English trip -- VC(情景课)1 A Get ready

    Meet your classmates 见见你的同学 Look at the picture. What do you see? 看图片.你看到了什么? calendar  日历 bookcase ...

  7. Spring Cloud 学习网址

    1. https://blog.csdn.net/forezp/article/details/70148833  史上最简单的 SpringCloud 教程 (非常适合新手快速上手教程)2.http ...

  8. 20170731xlVba根据数据表和模板表生成新表

    Public Sub SplitData() Dim Wb As Workbook Dim Sht As Worksheet Dim NewSht As Worksheet Dim arr As Va ...

  9. Confluence 6 为站点启用匿名用户访问

    如果你希望你的站点能够被所有人看到,包括不需要登录就可以访问的用户.你必须为你的站点启用匿名用户访问权限才可以. 希望启用匿名用户访问你的站点: 在屏幕的右上角单击 控制台按钮 ,然后选择 Gener ...

  10. pandas的concat函数和append方法

    pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,keys=None, levels=None, nam ...