#list #mongodb #collections #batch-processing
#Список #mongodb #Коллекции #пакетная обработка
Вопрос:
Я начал свое путешествие в MongoDB со следующих вопросов:
- Как перечислить все базы данных в MongoDB?
- Как перечислить все коллекции в определенной базе данных?
- Как указать количество документов в определенной коллекции?
Ответы, которые я нашел, приведены ниже:
- показать базы данных
- использование
<db name>
показать коллекции - использование
<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 для вашего любимого языка сценариев и реализуйте что-то вроде того, что показано выше. Будут доступны все основные методы и принципы.