DEV Community

LS
LS

Posted on • Edited on

mongodb shell script counting

// ======= CONFIG: list your base collections here =======
const targetCollections = [
];

// ======= UTILITIES =======
function collExists(name) {
  return db.getCollectionInfos({ name }).length > 0;
}
function countOrZero(name) {
  if (!collExists(name)) return 0;
  // Accurate count; if you prefer faster (approx) use estimatedDocumentCount()
  return db.getCollection(name).countDocuments({});
}
function pad(str, len) {
  const s = String(str);
  return s + " ".repeat(Math.max(0, len - s.length));
}

// ======= RUN =======
const header =
  "Collection".padEnd(28) +
  "original".padEnd(12) +
  "duplicated_".padEnd(14) +
  "backup_".padEnd(12) +
  "backup_new_apps_".padEnd(18);

print(header);
print("-".repeat(header.length));

let totalOriginal = 0;
let totalDuplicated = 0;
let totalBackup = 0;
let totalBackupNewApps = 0;

for (const base of targetCollections) {
  const originalName = base;
  const duplicatedName = `duplicated_${base}`;
  const backupName = `backup_${base}`;
  const backupNewAppsName = `backup_new_apps_${base}`;

  const cOriginal = countOrZero(originalName);
  const cDup = countOrZero(duplicatedName);
  const cBackup = countOrZero(backupName);
  const cBackupNew = countOrZero(backupNewAppsName);

  totalOriginal += cOriginal;
  totalDuplicated += cDup;
  totalBackup += cBackup;
  totalBackupNewApps += cBackupNew;

  print(
    pad(base, 28) +
    pad(cOriginal, 12) +
    pad(cDup, 14) +
    pad(cBackup, 12) +
    pad(cBackupNew, 18)
  );
}

print("-".repeat(header.length));
print(
  pad("TOTAL", 28) +
  pad(totalOriginal, 12) +
  pad(totalDuplicated, 14) +
  pad(totalBackup, 12) +
  pad(totalBackupNewApps, 18)
);

Enter fullscreen mode Exit fullscreen mode

db.application.countDocuments({
$or: [
{ "applicants.0.firstName": { $exists: false } },
{ "applicants.0.firstName": null },
{ "applicants.0.firstName": "" },
{ "applicants.0.lastName": { $exists: false } },
{ "applicants.0.lastName": null },
{ "applicants.0.lastName": "" }
]
});

Top comments (0)