Получить количество документов в коллекции 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);
}