for 循环中的 pymongo count()

pymongo count() in for loop

以下代码:

client = MongoClient()
data_base = client.hkpr_restore

collection_list = ['agents', 'email_logs', 'property', 'user']
print data_base.agents.count()
print data_base.email_logs.count()
print data_base.property.count()
print data_base.user.count()

for x in collection_list:
    print data_base.x.count()

打印以下内容:

Begin Main
6622
32067
4168
18066
0
0
0
0
End Main

为什么循环不工作?

你不能那样使用变量。每次都在 data_base 上获取名为 x 的属性 - 与循环的 x 变量无关。相反,您需要使用 getattr:

for x in collection_list:
    print getattr(data_base, x).count()

getattr 允许您动态引用一个属性,其中属性的名称存储在一个直到运行时才知道的变量中。