mongodb任意のコレクションの列の値をPythonでリストにする

mongodb に、"service" なるコレクションがあったとします。
”type"という列の値のリスト抽出して、‘’空文字と合わせたリストを作ります。
”type"列が存在しないレコードもあることを考慮します。
・・・というお題。

import pymongo

def open_database(dbname):
    client = pymongo.MongoClient('mongodb://xxx.xxx.xxx.xxx', 27017)
    db = client[dbname]
    return db
db = open_database('sampledb')

types = ['']
for t in set((r['type'] for r in db['service'].find({'type':{'$exists':'true'}},{'type':1}))):
    types.append(t)

''空文字 と、MongoDB の serviceコレクションの 'type' のリストとして、types を生成

厳密にソートするなら、

types = ['']
for t in sorted(set((r['type'] for r in db['service'].find({'type':{'$exists':'true'}},{'type':1}))), reverse=False):
    types.append(t)

ソート逆順

types = ['']
for t in sorted(set((r['type'] for r in db['service'].find({'type':{'$exists':'true'}},{'type':1}))), reverse=True):
    types.append(t)

長いので、こう書いてもOK

types = ['']
for t in sorted(
        set((r['type'] for r in db['service'].find({'type': {'$exists': 'true'}}, {'type': 1}))),
        reverse=True):
    types.append(t)