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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。