从pymong获取合适的成员列表

2024-09-22 14:39:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用pymongo获取副本集中所有成员的列表。你知道吗

import pymongo
conn = pymongo.Connection(replicaset='myreplica')
conf = conn.local.system.replset.find_one()
print conf['members']

这似乎在我拥有的一个环境中起作用,如我所期望的那样返回一个结果列表。你知道吗

>>> print conf['members']
[{u'host': u'srvr-01:27017', u'_id': 0}, {u'priority': 0.5, u'host': u'srvr-02:27017', u'_id': 1}, {u'priority': 0.5, u'host': u'srvr-03:27017', u'_id': 2}]
>>>

然而,在另一个环境中,我得到的只是

>>> print conf['members']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'members'
>>> print conf
{u'_id': ObjectId('5483f1963784952946e3e799')}
>>>

我不明白为什么相同的代码会返回不同的结果。据我所知,环境是彼此的复制品。两个环境中都存在相同的副本集。你知道吗

有人知道为什么我得到的是一个OjbectID而不是一个正确的结果字典返回?谢谢


Tags: importidhost列表环境conf副本成员
1条回答
网友
1楼 · 发布于 2024-09-22 14:39:26

根据我们的讨论,问题很可能是插入了空记录。我不知道这是怎么发生的,但您可以尝试此方法,只查找具有成员的记录:

collection.find( { members : { $exists : true } } ); 

相关问题 更多 >