rs.add()
, rs.reconfig()
и аналогичные в оболочке mongo
на самом деле являются помощниками оболочки, а не фактическими командами, выполняемыми mongod
.
Вы можете проверить это, запустив rs.add
(безскобки) в оболочке mongo
.Вы увидите исходный код команды в консоли.
По сути, эти помощники в конечном итоге вызывают db.runCommand () или db.adminCommand () .Помощники заполняют необходимые поля для вызова runCommand()
.
Используя Python, вы можете эмулировать этих помощников, используя Database.command .
Например, здесь будет показано определение элемента набора реплик:
import pymongo
conn = pymongo.MongoClient()
conf = conn.admin.command({'replSetGetConfig': 1})
print(conf['config']['members'])
rs.add()
- это в основном переконфигурация набора реплик путем изменения содержимого поля members
так что вам нужно сделать что-то вроде:
import pymongo
conn = pymongo.MongoClient()
conf = conn.admin.command({'replSetGetConfig': 1})
conf['config']['members'].append({
'_id': 3,
'host': 'localhost:27020',
'hidden': True,
'priority': 0})
conf['config']['version'] += 1 # Bump the config version
res = conn.admin.command({'replSetReconfig': conf['config']})
print(res)