All we need is an easy explanation of the problem, so here it is.
If I’ve to get something like analogous to SQL statement from rs.status output to print specific value of an attribute in mongoDB –
Something like print health of specific node of a replica set from rs.status.
select health from rs.status where hostname like 'abc:123'
or something to print lagtime of a specific secondary replica node with respect to Primary node using :
print lagtime from rs.printSlaveReplicationInfo() where hostname like 'abc:123'
what would be the simple query or JS to run against a replica set connection string ?
How to solve :
I know you bored from this bug, So we are here to help you! Take a deep breath and look at the explanation of your problem. We have many solutions to this problem, But we recommend you to use the first method because it is tested & true method that will 100% work for you.
A one-liner would be this one:
mongo "mongodb://username:[email protected]:27018/admin?authSource=admin" --quiet --norc --eval "rs.status().members.filter( x => x.name == db.hello().me ).shift().health"
db.hello().me returns the server+port you are currently connected to. Replace this expression if you like to query other server in this replica set.
Note: Use and implement method 1 because this method fully tested our system.
Thank you 🙂