список базы данных, коллекции и номера документа в пакетном режиме

#list #mongodb #collections #batch-processing

#Список #mongodb #Коллекции #пакетная обработка

Вопрос:

Я начал свое путешествие в MongoDB со следующих вопросов:

  1. Как перечислить все базы данных в MongoDB?
  2. Как перечислить все коллекции в определенной базе данных?
  3. Как указать количество документов в определенной коллекции?

Ответы, которые я нашел, приведены ниже:

  1. показать базы данных
  2. использование <db name>
    показать коллекции
  3. использование <db name>
    db. <collection name> .count()

Все вышеперечисленные команды были запущены в оболочке MongoDB вручную. Я хотел бы найти способ запускать эти команды в пакетном режиме и получать результаты в формате:

Кто-нибудь хотел бы поделиться какими-либо идеями по ее реализации? Любой конкретный фрагмент будет с благодарностью оценен.

Ответ №1:

Ну, вы можете просто создать файл JavaScript и запустить его через оболочку mongo, если хотите:

 var db = db.getSiblingDB("admin");

var output = [];
db.runCommand({ listDatabases: 1 }).databases.map(
  function(x){ return x.name }
).forEach(function(dbname) {
  var cdb = db.getSiblingDB(dbname);
  cdb.getCollectionNames().forEach(function(coll) {
    var count = cdb.getCollection(coll).count();
    output.push({
      db: cdb,
      collection: coll,
      count: count
    });
  })
});

printjson( output );
  

А затем просто вызовите его. Я вызвал файл «lister.js «:

 mongo lister.js
  

Таким образом, вы можете использовать методы print() or printjson() , доступные оболочке, для получения выходных данных так, как вы хотите.

В противном случае обратитесь к драйверу MongoDB для вашего любимого языка сценариев и реализуйте что-то вроде того, что показано выше. Будут доступны все основные методы и принципы.