Получить количество документов в коллекции Mongodb

есть ли способ, чтобы перечислить все имена коллекций и количество документов для каждой коллекции в одном запросе?

тот, который я мог найти, дает только количество для определенной коллекции. Например, если Users тогда была коллекция

db.Users.count()

дал бы мне подсчет количества документов в коллекции Users.

3 ответов


в раковины все, что вам нужно сделать это:

db.getCollectionNames().map(function(name) { 
    return { "name": name, "count": db[name].count() } 
})

нет " команды "и нет" сингулярного "запроса коллекции ( это технически все еще несколько запросов, сделанных для каждой коллекции, и" исходный " запрос), чтобы сделать это, так как это не так, как MongoDB хранит данные. Но есть простой программный метод, и это в основном доступно для всех драйверов, а также.


Если вы просто хотите распечатать цифры и подсчитать, вы можете использовать forEach.

db.getCollectionNames().forEach(function(colName){
  print(colName+": "+db.collection(colName).count());
});

Если вы хотите использовать его для любых других операций, то вы можете использовать функцию карты.

db.getCollectionNames().map(function(colName){
  return {
    "columnName":colName,
    "count":db.getCollection(colName).count()
  }
});

нет, нет. Вы должны использовать

var collections = db.runCommand({
  listCollections:1,
  filter:{ name:{ $not: /^system\..*/ } }
})

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

for (var index = 0; index < collections.length; index++) {
    var current = collections[index];
    var doccount = db.runCommand({collStats:current,scale:1024,verbose:true}).count;
    print(current + ":" + doccount);
}