sql >> Databasteknik >  >> NoSQL >> MongoDB

Kan jag anropa rs.initiate() och rs.Add() från node.js med MongoDb-drivrutinen?

Hur implementeras administratörshjälparna för replikuppsättningen?

rs.* replica set admin hjälpare i mongo shell är omslag för MongoDB-kommandon som du kan skicka från vilken drivrutin som helst.

Du kan se vilka kommandon varje skalhjälpare lindar genom att hänvisa till MongoDB-dokumentationen:

Observera att mongo skalhjälpare kan göra lite extra validering eller manipulation av konfigurationer eftersom de är avsedda att användas via den interaktiva mongo skal.

Du kan bekräfta hur någon av skalhjälparna implementeras genom att anropa kommandot i skalet utan efterföljande parenteser, t.ex.:

> rs.initiate
function (c) { return db._adminCommand({ replSetInitiate: c }); }

Anropar replikuppsättningsdatabaskommandon från Node.js

Motsvarande logik kan implementeras via Node.js driver API med 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);
  });
});

Istället för att omimplementera replikuppsättningshjälparna i Node.js kan du anropa en mongo skal med --eval kommando för att köra skalhjälparen (tips:inkludera --quiet för att undertrycka onödiga meddelanden).

Till exempel, ringa från 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);
});



  1. Integrering av ClusterControl med SNMP:Del två

  2. Ignorera odefinierade värden som skickas i frågeobjektsparametern för Mongooses sökfunktion?

  3. Infoga dokument i mongodb med autoincrement-fält från java

  4. Mongodb find() fråga:returnerar endast unika värden (inga dubbletter)