sql >> Databáze >  >> NoSQL >> MongoDB

Mohu volat rs.initiate() a rs.Add() z node.js pomocí ovladače MongoDb?

Jak jsou implementováni pomocníci pro správu sady replik?

rs.* pomocníci pro správu sady replik v mongo shell jsou obaly pro příkazy MongoDB, které můžete odeslat z libovolného ovladače.

V dokumentaci MongoDB se můžete podívat, které příkazy každý pomocník shellu obaluje:

Všimněte si, že mongo pomocníci shellu mohou provádět nějaké další ověření nebo manipulaci s konfiguracemi, protože jsou určeny k použití prostřednictvím interaktivního mongo shell.

Můžete potvrdit, jak jsou implementováni pomocníci shellu, vyvoláním příkazu v shellu bez závorek na konci, např.:

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

Volání databázových příkazů sady replik z Node.js

Ekvivalentní logiku lze implementovat prostřednictvím rozhraní API ovladače Node.js pomocí 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);
  });
});

Spíše než reimplementaci pomocníků sady replik v Node.js můžete vyvolat mongo shell s --eval příkaz ke spuštění pomocníka shellu (tip:include --quiet potlačit zbytečné zprávy).

Například volání z aplikace Node:

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. Jak uložit výsledek dotazu (jeden dokument) do proměnné?

  2. Může Redis zapisovat do databáze, jako je PostgreSQL?

  3. Mongoose .save() se neukládá do databáze?

  4. Jak používat $query, $hint nebo $explain z Javy