PyMongo官方文件翻譯和解析

2021-08-22 12:00:40 字數 4429 閱讀 7393

bulk inserts插入多個文件

querying for more than one document訪問多個文件

counting文件計數方法

range queries限定訪問範圍

indexing增加索引

資料庫的操作無非是要掌握資料庫的增,改,刪,此篇文章為查閱官方文件的翻譯和解釋。

官方文件:tutorial — pymongo 3.7.1 documentation

已經安裝了pymongo,並且import pymongo沒有報錯

(pymongo安裝:在cmd中輸入pip3 install pymongo

連線mongodb例項的客戶端

1.from pymongo import mongoclient

client = mongoclient()沒有新增引數時,會連線預設的使用者和埠

2.但是可以指定使用者和埠client = mongoclient('localhost', 27017)

3.或者用mongodb uri 形式

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

db = client.test_database

如果資料庫名稱不能直接用客戶端.資料名的方式引用,如test-database

那就使用字典的方式引用:db = client['test-database']

集合(collection)是mongodb中的一系列檔案,可以理解為關聯式資料庫中的乙個表。得到collection和得到資料庫的操作是一樣的

collection = db.test_collection或者collection = db['test-collection']

注:1.從getting a database和getting a collection中可以看出,你要先得到乙個資料庫(db是得到的資料庫,collection是得到的集合),才能得到資料庫中的集合。2.一旦有文件插入的時候集合和資料庫就被建立

mongodb中的資料都是以json的形式儲存和展現的,使用pymongo時是用字典展示文件的

import datetime

post =

把乙個文件插入乙個集合中使用 insert_one()

>>> posts = db.posts

#insert_one插入文件,並用inserted_id得到id屬性

>>> post_id = posts.insert_one(post).inserted_id

>>> post_id

objectid('...')

如果你要插入的文件字典中沒有」_id」這個鍵,它會為你自動生成」_id」鍵和對應的值,每個文件都有自己特別的id。如圖,橢圓中的是每個文件的_id,矩形中的表示乙個文件

注:只要插入了第乙個文件集合就隨之建立通過「資料庫名.collection_names()」方法可以檢視資料庫中所有的集合

>>> db.collection_names(include_system_collections=false)

[u'posts']

得到單個文件的方法find_one(),結果返回none或者相匹配的文件

>>> 

import pprint

#沒有已知資訊匹配,返回了剛剛插入的posts

>>> pprint.pprint(posts.find_one())

#用已知資訊"author": "mike"做匹配

>>> pprint.pprint(posts.find_one())

>>> post_id#文件id,見inserting a document

objectid(...)

>>> pprint.pprint(posts.find_one())

>>> post_id_as_str = str(post_id)#文件id可轉化為字串形式,但是不能用該形式匹配文件

>>> posts.find_one() # no result沒有返回結果

>>>

如果有str型別的id務必在使用find_one方法前改為objectid型別

from bson.objectid import objectid

# the web framework gets post_id from the url and passes it as a string

defget

(post_id):

# convert from string to objectid:

document = client.db.collection.find_one()

使用insert_many()方法,多個文件以列表的形式插入

#列表new_posts中有兩個字典元素,乙個字典表示乙個文件

>>> new_posts = [,

... ]

>>> result = posts.insert_many(new_posts)

>>> result.inserted_ids

[objectid('...'), objectid('...')]

find()方法

#無引數輸入時,列印出該集合所有文件

>>>

for post in posts.find():

... pprint.pprint(post)

...

#有參輸入時,只列印匹配文件

>>>

for post in posts.find():

... pprint.pprint(post)

...

#此方法可計算乙個集合所含的文件數

>>> posts.count()

3

#此方法計算集合中滿足匹配條件的文件數

>>> posts.find().count()

2

>>> d = datetime.datetime(2009, 11, 12, 12)

#"$lt"表示限定範圍 sort()表示由操作者來分類

>>>

for post in posts.find(}).sort("author"):

... pprint.pprint(post)

...

#增加索引,並且是獨一無二的

>>> result = db.profiles.create_index([('user_id', pymongo.ascending)],

... unique=true)

#顯示現有的索引,乙個是自動新增的_id,乙個是手動增加的索引user_id

>>> sorted(list(db.profiles.index_information()))

[u'_id_', u'user_id_1']

>>> user_profiles = [

... ,

... ]

>>> result = db.profiles.insert_many(user_profiles)

>>> new_profile =

>>> duplicate_profile =

>>> result = db.profiles.insert_one(new_profile) # this is fine.

>>> result = db.profiles.insert_one(duplicate_profile)#有重複user_id則報錯

traceback (most recent call last):

duplicatekeyerror: e11000 duplicate key error index: test_database.profiles.$user_id_1 dup key:

Core Foundation 官方文件翻譯

core foundation框架中常用的隱含型別 使用這些隱含型別時需要自己初始化,自己去釋放記憶體。所以需要記住,在初始化的同時在相應位置釋放。以防出現記憶體問題。1.cfstringref 其他方法用的時候可以檢視文件 void testcfstringref 2 cfarrayref,還有很...

Docker 官方文件翻譯

docker compose 是利用docker來執行多個容器的工具。利用compose 在乙個檔案中定義多個容器,然後利用乙個單獨的命令,可以執行你所想做的任何事情。compose 能較好的作為開發環境的假設,伺服器腳手架以及ci方面的應用。我們不推薦使用在生產環境中。使用compose 需要一下...

voltdb官方文件翻譯 一)

最近研究voltdb,發現網上的資料很少。但是官網的文件講述的還是挺清楚的。所以就把看後的觀點記錄下來,方便後來人,廢話不多說,進入正題。首先,voltdb是什麼。它是一款記憶體資料庫,號稱實現了acid和事務隔離,快速解決大資料量和大併發量的秒級相應。本人實際使用了一下感覺還是蠻好的。因為volt...