python操作Mongodb

参考文章

Python MongoDB

MongoDB高级查询用法大全

1,引用 pymongo 包

from pymongo import MongoClient

2,链接mongodb

链接数据库dbname ,如果数据库 dbname 不存在,则创建。

myclient = MongoClient(host="192.168.1.12", port=27017)
mydb = myclient["dbname"]
mydb.authenticate("userName", "passwords", mechanism='SCRAM-SHA-1')

3,新增

新增,查询,修改,删除前必修指定集合 collectionName,如果不存在则创建。

mydb.get_collection("collectionName")

mydb.collection_names() 可以查询已存在集合

insert :插入数据, 返回 InsertOneResult 对象,该对象包含 inserted_id 属性,它是插入文档的 id 值

mydict = {"name": "RUNOOB", "alexa": "10000", "url": "https://www.runoob.com"}
result = mycol.insert(mydict)
print (result)

mylist = [
	{"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"}
]
result = mycol.insert(mylist)
print (result)

执行结果
在这里插入图片描述
其他新增方法:

insert_one : 集合中插入一条文档

insert_many :集合中插入多个文档

4,查询

find_one :查询集合中的一条数据

find :查询集合中的所有数据,类似 SQL 中的 SELECT * 操作

    myParams = {"name": "Taobao"}
    result = mycol.find_one(myParams)
    print(result)
    print("------------------------------------")
    result = mycol.find(myParams)
    for item in result:
        print(item)

执行结果
在这里插入图片描述
查询指定字段的数据。1 显示,0 隐藏。如:

{ "_id": 0, "name": 1, "alexa": 1 }  

除了 _id 你不能在一个对象中同时指定 0 和 1,如果你设置了一个字段为 0,则其他都为 1,反之亦然。

    myParams = {"name": "Taobao"}
    myColumn = {"_id": 0, "name": 1, "alexa": 1}
    result = mycol.find_one(myParams, myColumn)
    print(result)
    print("------------------------------------")
    result = mycol.find(myParams, myColumn)
    for item in result:
        print(item)

执行结果
在这里插入图片描述
高级查询

$gt:大于。如:{ "field" : { "$gt": value } } 

$lt:小于。如:{ "field" : { "$lt": value } } 

$gte:大于或等于。如:{ "field" : { "$gte": value } } 

$lte:小于或等于。如:{ "field" : { "$lte": value } } 

$ne:不等于。如:{ "field" : { "$ne": value } } 

$in []: 在数组内。如:{ "field" : { "$in": [1,2,3] } } 

$nin []: 不在数组内。如:{ "field" : { "$nin": [1,2,3] } } 

$all []: $all和$in类似,但是他需要匹配条件内所有的值。如:{ "field" : { "$all": [1,2,3] } } 

$size 计算长度。如:{ "field" : { "$size": 2} } 

$exists 用来判断一个元素是否存在,true 存在,false 不存在。如:{ "field" : { "$exists": true} } 

可以混合使用

    myParams = {"alexa": {"$gte": "100", "$lte": "103"}}
    myColumn = {"_id": 0, "name": 1, "alexa": 1}
    result = mycol.find(myParams, myColumn)
    for item in result:
        print(item)

执行结果

在这里插入图片描述
使用正则表达式查询

{ "field" :{"$regex": "^R"}} 

limit :指定条数的文档

sort :排序,1 顺序,-1 倒序

limit , sort 组合可以达到max,min 的效果

mycol.find().limit(3)
#max
mycol.find().sort({"age" : -1}).limit(1)
#min
mycol.find().sort({"age" : 1}).limit(1)

distinct :排除指定的属性,且去重。

    result = mycol.distinct("name", myParams)
    print(result)

执行结果
在这里插入图片描述

5,修改

update_one : 修改符合条件的第一条文档

update_many :修改符合条件的所有文档

    myQuery = {"alexa": "10000"}
    newValues = {"$set": {"alexa": "12345"}}
    mycol.update_many(myQuery, newValues)

    result = mycol.find()
    for item in result:
        print(item)

执行结果
在这里插入图片描述

6,删除

delete_one :删除一条文档

    myQuery = {"name": "Taobao"}
    mycol.delete_one(myQuery)

    for x in mycol.find():
        print(x)

delete_many : 删除多条文档,方法如果传入的是一个空的查询对象,则会删除集合中的所有文档:

    myQuery = {"name": "Taobao"}
    mycol.delete_many(myQuery)

    for x in mycol.find():
        print(x)

drop : 删除集合

	mycol.drop()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值