pymongo可以检测集合是否有上限?

时间:2012-10-03 20:44:48

标签: python mongodb pymongo

我在Python中编写功能以确保mongodb集合的存在,类型和大小。大多数这些集合都有上限。我知道mongo shell包含mycollection.iscapped(),但pymongo似乎不支持此功能。

在pymongo的背景下,判断一个集合是否有上限集合的最佳方法是什么?

3 个答案:

答案 0 :(得分:5)

如果是mycollection.options(),则调用'capped': True会返回一个dict,如果它是一个上限集合。

答案 1 :(得分:1)

找到它。

# Where db is a pymongo database object
>>> db.command('collstats','mycollection')
{u'count': 308291, u'ns': u'mydb.mycollection', u'ok': 1.0, u'lastExtentSize': 83890176, u'avgObjSize': 256.10971452296695, u'max': 2147483647, u'totalIndexSize': 20407296, u'flags': 0, u'capped': 1, u'numExtents': 1, u'nindexes': 1, u'storageSize': 83890176, u'indexSizes': {u'tem_1_tbm_1_ip1_1_ip2_1_p2_1': 20407296}, u'paddingFactor': 1.0, u'size': 78956320}

注意'capped': 1

答案 2 :(得分:0)

要获取我使用的数据库中所有受限制的集合的列表,请执行以下操作:

def get_capped_collections(db):
    capped_collections = []
    for collcetion in db.collection_names():
        options = db[collection].options()
        if "capped" in options and options["capped"]:
            capped_collections.append(collection)
    return capped_collections