pymongo使用

创建对象

# 导入模块
import pymongo
# 创建mongodb客户端对象
mongo_con = pymongo.MongoClient("mongodb://admin:admin888@192.168.1.999:27017/")

# 指定mongodb需要操作的数据库(两种方法均可)
db = mongo_con.test
# db = mongo_con['test']

C增加 insert()

# 向c1集合中插入单条文档数据
data1 = {"name": "baidu", "alexa": "99", "url": "https://www.baidu.com"}

x = db.c1.insert_one(data1)
# 返回插入文档_id
print(x.inserted_id)

结果:

# 向c1集合中插入多条文档数据
data2 = [
  { "name": "Taobao", "alexa": "100", "url": "https://www.taobao.com" },
  { "name": "QQ", "alexa": "101", "url": "https://www.qq.com" },
  { "name": "Facebook", "alexa": "10", "url": "https://www.facebook.com" },
  { "name": "知乎", "alexa": "103", "url": "https://www.zhihu.com" },
  { "name": "Github", "alexa": "109", "url": "https://www.github.com" }
]

x = db.c1.insert_many(data2)
# 返回插入文档_id的列表
print(x.inserted_ids) 

结果:

 

 

 # R查 find()

# 查询c1集合中的所有文档(两种方法均可)
# for x in db.c1.find():
#     print(x)

for x in db['c1'].find():
    print(x)

结果:

# 查询test数据库中所有的集合名称
collist = db.list_collection_names()
for collection in collist:
    print(collection)

结果:

# 根据条件查询(正则($regex),大小($gt,$lt),包括($in),不包括($nin))
# myquery = {'name': 'QQ'}
# myquery = {'name': {"$gt": "H"}}
# myquery = {'age': {"$gt": 5}}
myquery = {'name': {"$regex": r"^Q"}}
for doc in db.c1.find(myquery):
    print(doc)

结果:

# 查询返回指定字段,在find()函数,第二个参数传入键值对,键为字段,值为0或1;

# 返回字段的值可同时为1或者0(_id字段除外)
for doc in db.c1.find({}, {"_id":0 ,"name": 1, "url": 1}):
    print(doc)

for doc in db.c1.find({}, {"_id":0 ,"name": 0, "url": 0}):
    print(doc)

结果:

# 当除_id字段的其他字段出现值不相同时报错
for doc in db.c1.find({}, {"_id":0 ,"name": 1, "url": 0}):
    print(doc)
报错:pymongo.errors.OperationFailure: database error: Can't canonicalize query: BadValue Projection cannot have a mix of inclusion and exclusion., full error: {'$err': "Can't canonicalize query: BadValue Projection cannot have a mix of inclusion and exclusion.", 'code': 17287, 'ok': 0}

结果:

# 限制输出文档数
for doc in db.c1.find().limit(3):
    print(doc)

结果:

#跳过几个文档输出
for doc in db.c1.find().skip(3):
    print(doc)

结果:

# 根据条件排序输出,第一参数为键名,第二个参数为值得排列顺序,1为升序,-1为降序
for doc in db.c1.find().sort('name', -1):
    print(doc)

结果:

 

 

 

 

 # U改 update()

# 修改一个文档
db.c1.update_one({"name": "baidu"}, {"$set": {"name": "百度"}})

结果:

# 修改多个文档
x = db.c1.update_many({"alexa": {"$regex": r"^3"}}, {"$set": {"alexa": "200"}})
print(x.modified_count)

结果:

 

 

 

修改器作用
$inc 递增
$rename 重命名列
$set 修改列值
$unset 删除列

 

# D删除 remove()

# 删除一个指定文档
db.c1.delete_one({'name': '百度'})
# myquery = {'age': {'$gt': 10}}还可配合运算符使用

结果:

# 删除c1集合中所有文档
x = db.c1.delete_many({})
# 返回删除数量
print(x.deleted_count)

结果:

# 删除c1集合
db.c1.drop()

 

posted @ 2020-09-20 21:31  sewen  Views(149)  Comments(0)    收藏  举报