Jusene's Blog

PyMongo 基础操作学习

字数统计: 618阅读时长: 3 min
2017/11/26 Share

pymongo

项目需要,用到mongodb数据库,为了写些简单的脚本,来学习下pymongo的基础操作。

安装和使用pymongo

1
~]# pip install -U pymongo

连接认证数据库

1
import pymongo
2
3
client=pymongo.MongoClient("mongodb://127.0.0.1:27017")
4
db=client.admin     #设置了auth
5
db.authenticate(name="jusene",password='123456')  #获得userAdminAnyDatabase权限

创建一个数据库

1
testdb=client.testdb
2
testdb.add_user(name='testdb',password='123456',read_only=None)  #设置了auth,需要为这个数据库添加用户认证
3
testdb.authenticate('testdb','123456')  #auth该数据库

创建并插入collection

1
coll=testdb.testcoll
2
result=coll.insert_one({"address":"127.0.0.1"})
3
result=coll.insert_many([{"x":i} for i in range(10)])  插入多条数据

查询数据

1
cursor=coll.find()   #查询全部的documents,返回一个迭代器
2
cursor=coll.find({"address":"127.0.0.1"})  #查询特定的内容的documet,返回一个迭代器
3
cursor=coll.find({"grade.low":20})  #查询存在多层数据结构的document
4
cursor=coll.find({"grades.grade":"80"})  #查询的对象是一个迭代的数据结构,在这个迭代的数据结构是否存在符合的document
5
cursor=coll.find({"grades.score":{"$gt":30}})  #查找大于该数值的document
6
cursor=coll.find({"grades.score":{"$lt":30}})  #查找小于该数值的document
7
cursor=coll.find({"address":127.0.0.1,"grades.score":{"$gt":30}})  #AND条件查询
8
cursor=coll.find({"$or":[{"address":"127.0.0.1"},{"grades.score":50}]}) #OR条件查询
9
cursor=coll.find().sort("grades.score",pymongo.ASCENDING)  #升序,默认
10
cursor=coll.find().sort("grades.score",pymongo.DESCENDING) #降序

更新数据

1
result=coll.update_one({"address":"127.0.0.1"},{"$set":{"address":"10.10.10.10"}})  #更新一个document
2
result=coll.update_one({"address":"127.0.0.1"},{"$set":{"grade.low":100}})   #更新一个嵌入式数据
3
result=coll.update_many({"address":"127.0.0.1"},{"$set":{"grade":90}})  #更新符合的全部documet
4
result=coll.replace_one({"address":"127.0.0.1"},{"name":"testdata"})   #更换一个document

删除数据

1
result=coll.delete_one({"address":"127.0.0.1"})  #删除一个符合的document
2
result=coll.delete_many({"address":"127.0.0.1"})  #删除全部符合的documnet
3
result=coll.delete_many({})   # 删除全部的document
4
testdb.testcoll.drop()  # 删除整个collection

数据汇聚

1
cursor=coll.aggregate([{"$group":{"$_id":"$address","count":{"$sum":1}}}])  #以$address的内容进行文档分组,并使用$sum来累加document的数量
2
cursor=coll.aggregate([{"$match":{"address":"127.0.0.1","grades.grade":60}},{"$group":{"$_id":"$address","count":{"$sum":1}}}]) #先过滤后分组

创建索引

1
coll.create_index([("address",pymongo.ASCENDING)])   #创建单个索引
2
coll.create_index([("address",pymongo.ASCENDING),("address.zipcode",pymongo.DESCENDING)])  #创建多个索引
CATALOG
  1. 1. pymongo
  2. 2. 安装和使用pymongo