Hvordan implementeres replikasættets administratorhjælpere?
rs.*
replika sæt admin hjælpere
i mongo
shell er wrappers til MongoDB-kommandoer, som du kan sende fra enhver driver.
Du kan se hvilke kommando(er) hver shell-hjælper ombryder ved at henvise til MongoDB-dokumentationen:
rs.initiate()
giver en indpakning omkringreplSetInitiate
databasekommando.rs.add()
giver en indpakning omkring nogle af funktionerne ireplSetReconfig
databasekommando og den tilsvarende mongo shell-hjælperrs.reconfig()
.rs.conf()
omslutterreplSetGetConfig
databasekommando.
Bemærk, at mongo
shell-hjælpere kan udføre noget ekstra validering eller manipulation af konfigurationer, da de er beregnet til at blive brugt via den interaktive mongo
skal.
Du kan bekræfte, hvordan en hvilken som helst af shell-hjælperne er implementeret ved at påkalde kommandoen i shellen uden efterfølgende parenteser, f.eks.:
> rs.initiate
function (c) { return db._adminCommand({ replSetInitiate: c }); }
Kalder replikasæt-databasekommandoer fra Node.js
Den tilsvarende logik kan implementeres via Node.js driver API ved hjælp af command()
:
// Rough equivalent of rs.initiate()
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
// Use the admin database for commands
var adminDb = db.admin();
// Default replica set conf
var conf = {};
adminDb.command({replSetInitiate: conf}, function(err, info) {
console.log(info);
});
});
I stedet for at genimplementere replikasættets hjælpere i Node.js, kan du kalde en mongo
skal med --eval
kommando for at køre shell-hjælperen (tip:inkludere --quiet
for at undertrykke unødvendige beskeder).
For eksempel opkald fra din Node-app:
var exec = require('child_process').exec;
var rsAdmin = exec('mongo --eval "var res = rs.initiate(); printjson(res)" --quiet', function (error, stdout, stderr) {
// output is in stdout
console.log(stdout);
});