解释'收集'在db.collection.drop()中作为变量与set数据库

时间:2018-04-08 03:07:23

标签: python mongodb pymongo

我试图遍历MongoDB 3.4数据库中的集合列表并执行更新和删除。我试图让代码解释'集合'作为字符串变量,但代码认为它是一个单独的数据库:

for collection in db.collection_names():
    if collection[-3:] == "_CS":
        request = [UpdateMany({},{"$set": {"Collection": collection}})]
        result = db.collection.bulk_write(request)

    else:
        db.collection.drop() 

是否有另一种方法可以通过Python / Pymongo删除集合,该集合将集合的名称作为参数,或者是否有办法解析集合'以便口译员意识到它是一个变量?

1 个答案:

答案 0 :(得分:0)

在循环块中,collection名称绑定到str对象。

字典样式索引在此处用于访问具有collection名称的集合。 e.g。

for collection in db.collection_names():
    if collection[-3:] == "_CS":
        request = [UpdateMany({},{"$set": {"Collection": collection}})]
        result = db[collection].bulk_write(request)

    else:
        db[collection].drop()

或者,使用get_collection实例的pymongo.database.Database方法。

for collection in db.collection_names():
    if collection[-3:] == "_CS":
        request = [UpdateMany({},{"$set": {"Collection": collection}})]
        result = db.get_collection(collection).bulk_write(request)

    else:
        db.get_collection(collection).drop()