python MongoDB 文件型資料庫

2021-09-25 22:04:41 字數 3636 閱讀 8831

import  pymongo

client= pymongo.mongoclient(host='localhost',port=27017)

# client=mongoclient('mongodb://localhost:27017/')

#指定資料庫

db=client.test

#db=client['test']

##指定集合(collection)

collection =db.students # collection=db['students']

student =

result = collection.insert(student)

print(result)

'''在mongodb中,每條資料其實都有乙個_id屬性來唯一標識。如果沒有顯式指明該屬性,

mongodb會自動產生乙個objectid型別的_id屬性。insert()方法會在執行後返回_id值。

也可以同時插入多條資料,只需要以列表形式傳遞即可

result = collection.insert([student1, student2])

print(result)

返回結果是對應的_id的集合:

[objectid('5932a80115c2606a59e8a048'), objectid('5932a80115c2606a59e8a049')]

pymongo 3.x版本中,官方已經不推薦使用insert()方法了。當然,繼續使用也沒有什麼問題。

官方推薦使用insert_one()和insert_many()方法來分別插入單條記錄和多條記錄,

result = collection.insert_one(student)

print(result) //print(result.inserted_id) //5932ab0f15c2606f0c1cf6c5

result = collection.insert_many([student1, student2])

print(result) //print(result.inserted_ids)// [objectid('5932abf415c2607083d3b2ac'), objectid('5932abf415c2607083d3b2ad')]

'''##查詢

'''利用find_one()或find()方法進行查詢,其中find_one()查詢得到的是單個結果,find()則返回乙個生成器物件。、

當然,如果查詢結果不存在,則會返回none。

name為mike的資料,它的返回結果是字典型別,

result = collection.find_one()

print(type(result))

print(result)

////

根據objectid來查詢,此時需要使用bson庫裡面的objectid

from bson.objectid import objectid

result = collection.find_one()

如果要查詢年齡大於20的資料,results = collection.find(})

$lt 小於}

$gt大於}

$lte小於等於}

$gte大於等於}

$ne不等於}

$in在範圍內}

$nin不在範圍內}

$regex匹配正規表示式}name以m開頭

$exists屬性是否存在}name屬性存在

$type型別判斷}age的型別為int

$mod數字模操作年齡模5餘0

$text文字查詢}text型別的屬性中包含mike字串

$where高階條件查詢自身粉絲數等於關注數

##計數

count = collection.find().count()

count = collection.find().count()

'''##排序

results = collection.find().sort('name', pymongo.ascending) # pymongo.descending降序 pymongo.ascending公升序

print([result['name'] for result in results])

# ['harden', 'jordan', 'kevin', 'mark', 'mike']

##偏移

results = collection.find().sort('name', pymongo.ascending).skip(2)

print([result['name'] for result in results])

#['kevin', 'mark', 'mike']

##限制

results = collection.find().sort('name', pymongo.ascending).skip(2).limit(2)

print([result['name'] for result in results])

#['kevin', 'mark']

##更新

condition =

student=collection.find_one(condition)

student['age']=25

result=collection.update(condition,student)

print(result) #

#alse

result = collection.update(condition, )

# 只更新student字典內存在的字段。如果原先還有其他字段,則不會更新,也不會刪除。

# 而如果不用$set的話,則會把之前的資料全部用student字典替換;如果原本存在其他字段,則會被刪除。

'''condition = }

result = collection.update_one(condition, })

print(result)

print(result.matched_count, result.modified_count)

這裡指定查詢條件為年齡大於20,然後更新條件為},也就是年齡加1,執行之後會將第一條符合條件的資料年齡加1

1 1 #匹配條數為1條,影響條數也為1條

'''##刪除

result = collection.remove()

print(result)#

result = collection.delete_one()

print(result)

print(result.deleted_count)

result = collection.delete_many(})

print(result.deleted_count)

'''其他操作

另外,pymongo還提供了一些組合方法,如find_one_and_delete()、find_one_and_replace()和find_one_and_update(),

它們是查詢後刪除、替換和更新操作,其用法與上述方法基本一致。

另外,還可以對索引進行操作,相關方法有create_index()、create_indexes()和drop_index()等。

'''

Python Mongodb資料儲存

導言 一直在用mysql,聽說mongodb非常不錯,一直在工作中沒用到,這個週末來玩玩 mongodb安裝mongodb 管理工具 rockmongo python mongodb操作 coding utf 8 import pymongo client pymongo.mongoclient l...

Python MongoDB常用操作

mongodb 是乙個基於分布式檔案儲存的資料庫。由c 語言編寫。旨在為web應用提供可擴充套件的高效能資料儲存解決方案。mongodb 是乙個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。他支援的資料結構非常鬆散,是類似json的bson格式,因此...

Python MongoDB 筆記 增刪改查

client mongoclient mongodb localhost 27017 db client.testcollection db.studentsstudent1 student2 單條 result collection.insert one studentl print result...