更新 1:
如果您想对 MongoDb 数据库中的所有集合应用查询,您可以发出如下查询:;
db.getCollectionNames().forEach(function(n) {
print(n + ":" + db[n].count());
});
上面的查询将为您提供 MongoDB 数据库中所有集合的计数。
原帖
如果您的业务问题是关于知道每天插入了多少条记录,那么您可以使用 map reduce 框架使用存储在 _id 字段中的 ObjectId 来计算每天的记录数。此聚合将包含插入数据的所有日期。
您必须有一个将 ID 转换为日期字符串的 JS 函数,以将其保存在 db.system.js 集合中,然后对相应的集合执行 mapReduce 调用。
下面是代码:
var dateFromObjectId = function (objectId) {
var d = objectId.getTimestamp();
return (d.getYear() + 1900) + "-" + (d.getMonth() + 1) + "-" + d.getDate();
};
db.system.js.save({ "_id": "dateFromObjectId", "value": dateFromObjectId });
db.metrics.mapReduce(
function() {
emit(dateFromObjectId(this._id), 1);
},
function(key, values) {
return Array.sum(values);
},
{ "out": { "inline": 1 } }
)
这将打印如下内容:
{
"results": [{
"_id": "2018-0-2",
"value": 10628
},
{
"_id": "2018-0-3",
"value": 13835
},
{
"_id": "2018-0-4",
"value": 11624
},
{
"_id": "2018-0-5",
"value": 8983
},
{
"_id": "2018-0-6",
"value": 1076
},
{
"_id": "2018-1-0",
"value": 25771
},
{
"_id": "2018-1-1",
"value": 20498
},
{
"_id": "2018-1-2",
"value": 4703
},
{
"_id": "2018-1-3",
"value": 12738
},
{
"_id": "2018-1-4",
"value": 23840
},
{
"_id": "2018-1-5",
"value": 25888
},
{
"_id": "2018-1-6",
"value": 25377
},
{
"_id": "2018-2-0",
"value": 2183
}
],
"timeMillis": 5528,
"counts": {
"input": 599471,
"emit": 599471,
"reduce": 1941,
"output": 63
},
"ok": 1
}