PyMongo 无法识别集合名称是否为客户端
PyMongo not recognizing if the name of the collection is client
我在我的数据库上打开了一个游标,并且我在数据库中有一个名为 client
的集合。当我尝试执行类似
的查询时
def connect_to_primary(host, port):
"""this function is to connect to primary host in a replicaset"""
connection = MongoClient(str(host), int(port))
admindb = connection.admin
pri_host_port_con = admindb.command("isMaster")
primary_con = pri_host_port_con['primary']
pri_host_port = primary_con.replace(':', ' ').split()
pri_host = pri_host_port[0]
pri_port = pri_host_port[1]
final_connection = MongoClient(str(pri_host), int(pri_port))
return final_connection
connect_to_primary(host,port)[db].client.find({}).distinct('clientid')
我收到以下错误:
File "/usr/lib64/python2.7/site-packages/pymongo/database.py", line 1116, in __call__
self.__name, self.__client.__class__.__name__))
TypeError: 'Database' object is not callable. If you meant to call the 'find' method on a 'MongoClient' object it is failing because no such method exists.
这是怎么回事?
你得到这个的原因是 Database
instances have a client
属性 returns 数据库的客户端实例,如以下交互式 Python 会话所示。
>>> import pymongo
>>> connection = pymongo.MongoClient()
>>> db = connection["test"]
>>> db
Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'test')
>>> db.client
MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True)
唯一的解决方案是使用 get_collection
方法或 []
运算符。
>>> db["client"]
Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'test'), 'client')
>>> db.get_collection("client")
Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'test'), 'client')
我在我的数据库上打开了一个游标,并且我在数据库中有一个名为 client
的集合。当我尝试执行类似
def connect_to_primary(host, port):
"""this function is to connect to primary host in a replicaset"""
connection = MongoClient(str(host), int(port))
admindb = connection.admin
pri_host_port_con = admindb.command("isMaster")
primary_con = pri_host_port_con['primary']
pri_host_port = primary_con.replace(':', ' ').split()
pri_host = pri_host_port[0]
pri_port = pri_host_port[1]
final_connection = MongoClient(str(pri_host), int(pri_port))
return final_connection
connect_to_primary(host,port)[db].client.find({}).distinct('clientid')
我收到以下错误:
File "/usr/lib64/python2.7/site-packages/pymongo/database.py", line 1116, in __call__
self.__name, self.__client.__class__.__name__))
TypeError: 'Database' object is not callable. If you meant to call the 'find' method on a 'MongoClient' object it is failing because no such method exists.
这是怎么回事?
你得到这个的原因是 Database
instances have a client
属性 returns 数据库的客户端实例,如以下交互式 Python 会话所示。
>>> import pymongo
>>> connection = pymongo.MongoClient()
>>> db = connection["test"]
>>> db
Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'test')
>>> db.client
MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True)
唯一的解决方案是使用 get_collection
方法或 []
运算符。
>>> db["client"]
Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'test'), 'client')
>>> db.get_collection("client")
Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'test'), 'client')