列表数据库,集合和批处理模式下的文档数量

时间:2014-06-17 02:56:46

标签: list mongodb collections batch-processing

我使用以下问题开始了我的MongoDB之旅:

  1. 如何列出MongoDB中的所有数据库?
  2. 如何列出特定数据库中的所有馆藏?
  3. 如何列出特定馆藏中的文件数量?
  4. 我找到的答案如下:

    1. show dbs
    2. 使用<db name>
            展示收藏品
    3. 使用<db name>
            分贝。<collection name>。COUNT()
    4. 上面的所有命令都是手动在MongoDB shell中运行的。我想找到一种方法以批处理模式运行这些命令,并获得如下格式的结果:   

      有人愿意分享实施它的任何想法吗? 任何特定的片段都将不胜感激。

1 个答案:

答案 0 :(得分:0)

嗯,基本上你可以创建一个JavaScript文件并在需要时通过mongo shell运行它:

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 );

然后只是调用它。我调用了文件&#34; lister.js&#34;:

mongo lister.js

因此,您可以使用shell可用的print()printjson()方法生成输出。

否则,请查阅MongoDB驱动程序以获取您喜欢的脚本语言,并按照上面显示的内容实现。所有基本方法和原则都将可用。