summaryrefslogtreecommitdiff
path: root/src/mongo/db/stats
diff options
context:
space:
mode:
authorNick Zolnierz <nicholas.zolnierz@mongodb.com>2017-06-16 09:49:54 -0400
committerNick Zolnierz <nicholas.zolnierz@mongodb.com>2017-06-16 09:50:55 -0400
commit8ec35cb932d07eb034beee2b1938800675fb3c0c (patch)
tree274cd2fd0b83759381e6c4a26cdc40b73ed29a63 /src/mongo/db/stats
parent12014e33b8de9fd9daa6da37b478066c5486857f (diff)
downloadmongo-8ec35cb932d07eb034beee2b1938800675fb3c0c.tar.gz
SERVER-29620 Add shorthand syntax for retrieving the record count for a collection using the agg stage
Diffstat (limited to 'src/mongo/db/stats')
-rw-r--r--src/mongo/db/stats/storage_stats.cpp20
-rw-r--r--src/mongo/db/stats/storage_stats.h9
2 files changed, 28 insertions, 1 deletions
diff --git a/src/mongo/db/stats/storage_stats.cpp b/src/mongo/db/stats/storage_stats.cpp
index fca73b4a473..4d45dc02b4b 100644
--- a/src/mongo/db/stats/storage_stats.cpp
+++ b/src/mongo/db/stats/storage_stats.cpp
@@ -108,4 +108,24 @@ Status appendCollectionStorageStats(OperationContext* opCtx,
return Status::OK();
}
+
+Status appendCollectionRecordCount(OperationContext* opCtx,
+ const NamespaceString& nss,
+ BSONObjBuilder* result) {
+ AutoGetCollectionForReadCommand ctx(opCtx, nss);
+ if (!ctx.getDb()) {
+ return {ErrorCodes::BadValue,
+ str::stream() << "Database [" << nss.db().toString() << "] not found."};
+ }
+
+ Collection* collection = ctx.getCollection();
+ if (!collection) {
+ return {ErrorCodes::BadValue,
+ str::stream() << "Collection [" << nss.toString() << "] not found."};
+ }
+
+ result->appendNumber("count", static_cast<long long>(collection->numRecords(opCtx)));
+
+ return Status::OK();
+}
} // namespace mongo
diff --git a/src/mongo/db/stats/storage_stats.h b/src/mongo/db/stats/storage_stats.h
index 0f62229c80a..f3a3db99b9b 100644
--- a/src/mongo/db/stats/storage_stats.h
+++ b/src/mongo/db/stats/storage_stats.h
@@ -38,10 +38,17 @@ namespace mongo {
/**
* Appends to 'builder' storage related statistics for the collection represented by 'nss'.
- * Used by both the collStats command and the $collStats aggregation stage.
*/
Status appendCollectionStorageStats(OperationContext* opCtx,
const NamespaceString& nss,
const BSONObj& param,
BSONObjBuilder* builder);
+
+/**
+ * Appends the collection record count to 'builder' for the collection represented by 'nss'.
+ */
+Status appendCollectionRecordCount(OperationContext* opCtx,
+ const NamespaceString& nss,
+ BSONObjBuilder* builder);
+
}; // namespace mongo