日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 读取mongodb,python操作MongoDB

發布時間:2024/4/11 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 读取mongodb,python操作MongoDB 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python操作mongodb

連接mongodb

#!/usr/bin/env python

# -*- coding:utf-8 -*-

from pymongo import MongoClient

conn = MongoClient('192.168.0.113', 27017)

#連接mydb數據庫,賬號密碼認證

db = conn.mydb #連接mydb數據庫,沒有則自動創建

db.authenticate("account", "password")

my_set = db.test_set  #使用test_set集合,沒有則自動創建

插入數據(insert插入一個列表多條數據不用遍歷,效率高, save需要遍歷列表,一個個插入)

my_set.insert({"name":"zhangsan","age":18})

#或

my_set.save({"name":"zhangsan","age":18})

插入多條

添加多條數據到集合中

users=[{"name":"zhangsan","age":18},{"name":"lisi","age":20}]

my_set.insert(users)

#或

my_set.save(users)

查詢數據(查詢不到則返回None)

查詢全部:

for i in my_set.find():

print(i)

查詢name=zhangsan的:

for i in my_set.find({"name":"zhangsan"}):

print(i)

print(my_set.find_one({"name":"zhangsan"}))

更新數據

my_set.update(

, #查詢條件

, #update的對象和一些更新的操作符

{

upsert: , #如果不存在update的記錄,是否插入

multi: , #可選,mongodb 默認是false,只更新找到的第一條記錄

writeConcern: #可選,拋出異常的級別。

}

)

把上面插入的數據內的age改為20

my_set.update({"name":"zhangsan"},{'$set':{"age":20}})

刪除數據

my_set.remove(

, #(可選)刪除的文檔的條件

{

justOne: , #(可選)如果設為 true 或 1,則只刪除一個文檔

writeConcern: #(可選)拋出異常的級別

}

)

#刪除name=lisi的全部記錄

my_set.remove({'name': 'zhangsan'})

#刪除name=lisi的某個id的記錄

id = my_set.find_one({"name":"zhangsan"})["_id"]

my_set.remove(id)

#刪除集合里的所有記錄

db.users.remove()

mongodb的條件操作符

# (>) 大于 - $gt

# (

# (>=) 大于等于 - $gte

# (<= ) 小于等于 - $lte

例:查詢集合中age大于25的所有記錄

for i in my_set.find({"age":{"$gt":25}}):

print(i)

type(判斷類型)

#找出name的類型是String的

for i in my_set.find({'name':{'$type':2}}):

print(i)

類型隊對照列表

View Code

排序

在MongoDB中使用sort()方法對數據進行排序,sort()方法可以通過參數指定排序的字段,并使用 1 和 -1 來指定排序的方式,其中 1 為升序,-1為降序。

for i in my_set.find().sort([("age",1)]):

print(i)

limit和skip

limit()方法用來讀取指定數量的數據

skip()方法用來跳過指定數量的數據

下面表示跳過兩條數據后讀取6條

for i in my_set.find().skip(2).limit(6):

print(i)

IN

找出age是20、30、35的數據

for i in my_set.find({"age":{"$in":(20,30,35)}}):

print(i)

OR

找出age是20或35的記錄

for i in my_set.find({"$or":[{"age":20},{"age":35}]}):

print(i)

all

'''

dic = {"name":"lisi","age":18,"li":[1,2,3]}

dic2 = {"name":"zhangsan","age":18,"li":[1,2,3,4,5,6]}

my_set.insert(dic)

my_set.insert(dic2)'''

for i in my_set.find({'li':{'$all':[1,2,3,4]}}):

print(i)

#查看是否包含全部條件

輸出:{'_id': ObjectId('58c503b94fc9d44624f7b108'), 'name': 'zhangsan', 'age': 18, 'li': [1, 2, 3, 4, 5, 6]}

push/pushAll

my_set.update({'name':"lisi"}, {'$push':{'li':4}})

for i in my_set.find({'name':"lisi"}):

print(i)

輸出:{'li': [1, 2, 3, 4], '_id': ObjectId('58c50d784fc9d44ad8f2e803'), 'age': 18, 'name': 'lisi'}

my_set.update({'name':"lisi"}, {'$pushAll':{'li':[4,5]}})

for i in my_set.find({'name':"lisi"}):

print(i)

輸出:{'li': [1, 2, 3, 4, 4, 5], 'name': 'lisi', 'age': 18, '_id': ObjectId('58c50d784fc9d44ad8f2e803')}

pop/pull/pullAll

pop

移除最后一個元素(-1為移除第一個)

my_set.update({'name':"lisi"}, {'$pop':{'li':1}})

for i in my_set.find({'name':"lisi"}):

print(i)

輸出:{'_id': ObjectId('58c50d784fc9d44ad8f2e803'), 'age': 18, 'name': 'lisi', 'li': [1, 2, 3, 4, 4]}

pull (按值移除)

移除3

my_set.update({'name':"lisi"}, {'$pop':{'li':3}})

pullAll (移除全部符合條件的)

my_set.update({'name':"lisi"}, {'$pullAll':{'li':[1,2,3]}})

for i in my_set.find({'name':"lisi"}):

print(i)

輸出:{'name': 'lisi', '_id': ObjectId('58c50d784fc9d44ad8f2e803'), 'li': [4, 4], 'age': 18}

多級路徑元素操作

先插入一條數據

dic = {"name":"zhangsan",

"age":18,

"contact" : {

"email" : "1234567@qq.com",

"iphone" : "11223344"}

}

my_set.insert(dic)

多級目錄用. 連接

for i in my_set.find({"contact.iphone":"11223344"}):

print(i)

輸出:{'name': 'zhangsan', '_id': ObjectId('58c4f99c4fc9d42e0022c3b6'), 'age': 18, 'contact': {'email': '1234567@qq.com', 'iphone': '11223344'}}

result = my_set.find_one({"contact.iphone":"11223344"})

print(result["contact"]["email"])

輸出:1234567@qq.com

多級路徑下修改操作

result = my_set.update({"contact.iphone":"11223344"},{"$set":{"contact.email":"9999999@qq.com"}})

result1 = my_set.find_one({"contact.iphone":"11223344"})

print(result1["contact"]["email"])

#輸出:9999999@qq.com

還可以對數組用索引操作

dic = {"name":"lisi",

"age":18,

"contact" : [

{

"email" : "111111@qq.com",

"iphone" : "111"},

{

"email" : "222222@qq.com",

"iphone" : "222"}

]}

my_set.insert(dic)

查詢

result1 = my_set.find_one({"contact.1.iphone":"222"})

print(result1)

#輸出:{'age': 18, '_id': ObjectId('58c4ff574fc9d43844423db2'), 'name': 'lisi', 'contact': [{'iphone': '111', 'email': '111111@qq.com'}, {'iphone': '222', 'email': '222222@qq.com'}]}

修改

result = my_set.update({"contact.1.iphone":"222"},{"$set":{"contact.1.email":"222222@qq.com"}})

print(result1["contact"][1]["email"])

輸出:222222@qq.com

實例:

#!/usr/bin/python2

#coding=utf8

from pymongo import MongoClient

settings = {

"ip":'192.168.0.113',

"port":27017,

"db_name" : "inkscope",

"set_name" : "disk"

}

class MyMongoDB(object):

def __init__(self):

try:

self.conn = MongoClient(settings["ip"], settings["port"])

except Exception as e:

print(e)

self.db = self.conn[settings["db_name"]]

self.my_set = self.db[settings["set_name"]]

def insert(self,dic):

print("inser...")

self.my_set.insert(dic)

def update(self,dic,newdic):

print("update...")

self.my_set.update(dic,newdic)

def delete(self,dic):

print("delete...")

self.my_set.remove(dic)

def dbfind(self,dic):

print("find...")

data = self.my_set.find(dic)

for result in data:

print(result["name"],result["age"])

def dbfindall(self):

findall = list()

for i in self.my_set.find():

findall.append(i)

return findall

def main():

dic={"name":"zhangsan","age":18}

mongo = MyMongoDB()

mongo.insert(dic)

mongo.dbfind({"name":"zhangsan"})

mongo.update({"name":"zhangsan"},{"$set":{"age":"25"}})

mongo.dbfind({"name":"zhangsan"})

mongo.delete({"name":"zhangsan"})

mongo.dbfind({"name":"zhangsan"})

if __name__ == "__main__":

main()

安裝python中MongoDB的庫:

pip install pymongo

然后確保MongoDB已經安裝且可以正常運行,去官網下載相應版本:https://www.mongodb.com/

#mongo

MongoDB shell version v3.4.2

connecting to: mongodb://127.0.0.1:27017

MongoDB server version: 3.4.2

Welcome to the MongoDB shell.

.....................

使用用戶 admin 使用密碼 123456 連接到本地的 MongoDB 服務上

> mongodb://admin:123456@localhost/

創建數據庫(如果數據庫不存在,則創建數據庫,否則切換到指定數據庫)

> use test

switched to db test

> db

test

> show dbs #查看所有數據庫

admin 0.000GB

local 0.000GB

總結

以上是生活随笔為你收集整理的python 读取mongodb,python操作MongoDB的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。