sql >> Database >  >> NoSQL >> MongoDB

Kan ik rs.initiate() en rs.Add() aanroepen vanuit node.js met het MongoDb-stuurprogramma?

Hoe worden de beheerdershelpers van de replicaset geïmplementeerd?

De rs.* replica set admin helpers in de mongo shell zijn wrappers voor MongoDB-commando's die u vanuit elk stuurprogramma kunt verzenden.

U kunt zien welke opdracht(en) elke shell-helper omhult door te verwijzen naar de MongoDB-documentatie:

Merk op dat de mongo shell-helpers kunnen wat extra validatie of manipulatie van configuraties uitvoeren omdat ze bedoeld zijn om te worden gebruikt via de interactieve mongo schelp.

U kunt bevestigen hoe een van de shell-helpers wordt geïmplementeerd door het commando in de shell aan te roepen zonder haakjes achter te laten, bijvoorbeeld:

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

Replica set database-opdrachten aanroepen vanuit Node.js

De equivalente logica kan worden geïmplementeerd via de Node.js-stuurprogramma-API met behulp van 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);
  });
});

In plaats van de replicasethelpers in Node.js opnieuw te implementeren, kunt u een mongo aanroepen shell met de --eval commando om de shell-helper uit te voeren (tip:include --quiet om onnodige berichten te onderdrukken).

Bijvoorbeeld bellen vanuit uw 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. Nieuw bij MongoDB Kan opdracht mongo niet uitvoeren

  2. Hoe een schemamethode in mangoest toe te voegen?

  3. Redis probeert verbinding te maken met localhost op Heroku in plaats van REDIS_URL

  4. Zoek document met array dat een specifieke waarde bevat