操作步骤:
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", 27017) #创建数据库对象 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":1,"name":"黑胡子","Role":"船长"}) myset.save({"_id":1,"name":"白胡子","Role":"船长"}) #查找 cursor = myset.find({"Role":{"$eq":"四皇"}},{"_id":0}) 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(1).limit(1): print(i) #排序 for i in cursor.sort([("name",-1)]): print(i) query={"$or":[{"sex":"w"},{"age":{"$lt":"18"}}]} cursor = myset.find(query ,{"_id":0}) for i in cursor: print(i) #修改操作 myset.update({"name":"zengsf"},{"$unset":{"sex":""}}) #同时修改多条文档 myset.update({"name":"zengsf"},{"$set":{"age":"21"}},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()函数一样也是得到一个游标对象