MongoDB 是一個 cross-platform、document-oriented 數據庫,適用於集合和文檔的概念。它以鍵值對的形式存儲數據,是一個 NoSQL 數據庫程序。術語 NoSQL 意味著非關係。有關該主題的 in-depth 介紹,請參閱 MongoDB 和 Python。現在讓我們了解一下 PyMongo 中 distinct() 函數的使用。
distinct()
PyMongo 包括distinct()
查找並返回單個集合中指定字段的不同值並以數組形式返回結果的函數。
用法: distinct(key, filter = None, session = None, **kwargs)
參數:
- key:需要為其找到不同值的字段名稱。
- filter:(可選)一個查詢文檔,指定從中檢索不同值的文檔。
- session:(可選)一個 ClientSession。
讓我們創建一個示例集合:
# importing the module
from pymongo import MongoClient
# creating a MongoClient object
client = MongoClient()
# connecting with the portnumber and host
client = MongoClient("mongodb://localhost:27017/")
# accessing the database
database = client['database']
# access collection of the database
mycollection = mydatabase['myTable']
documents = [{"_id":1, "dept":"A",
"item":{"code":"012", "color":"red"},
"sizes":["S", "L"]},
{"_id":2, "dept":"A",
"item":{"code":"012", "color":"blue"},
"sizes":["M", "S"]},
{"_id":3, "dept":"B",
"item":{"code":"101", "color":"blue"},
"sizes":"L"},
{"_id":4, "dept":"A",
"item":{"code":"679", "color":"black"},
"sizes":["M"]}]
mycollection.insert_many(documents)
for doc in mycollection.find({}):
print(doc)
輸出:
{'_id':1, 'dept':'A', 'item':{'code':'012', 'color':'red'}, 'sizes':['S', 'L']} {'_id':2, 'dept':'A', 'item':{'code':'012', 'color':'blue'}, 'sizes':['M', 'S']} {'_id':3, 'dept':'B', 'item':{'code':'101', 'color':'blue'}, 'sizes':'L'} {'_id':4, 'dept':'A', 'item':{'code':'679', 'color':'black'}, 'sizes':['M']}
現在我們會;使用distinct()
方法:
- 返回字段的不同值
- 為嵌入的字段返回不同的值
- 返回數組字段的不同值
- 返回特定查詢
# distinct() function returns the distinct values for the
# field dept from all documents in the mycollection collection
print(mycollection.distinct('dept'))
# distinct values for the field color,
# embedded in the field item, from all documents
# in the mycollection collection
print(mycollection.distinct('item.color'))
# returns the distinct values for the field sizes
# from all documents in the mycollection collection
print(mycollection.distinct("sizes"))
# distinct values for the field code,
# embedded in the field item, from the documents
# in mycollection collection whose dept is equal to B.
print(mycollection.distinct("item.code", {"dept" :"B"}))
Output:
['A', 'B'] ['red', 'blue', 'black'] ['L', 'S', 'M'] ['101']
相關用法
注:本文由純淨天空篩選整理自gauravbabbar25大神的英文原創作品 Python MongoDB – distinct()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。