Mongodb 对名称以给定字符串开头的集合的文档计数

Mongodb 对名称以给定字符串开头的集合的文档计数,mongodb,Mongodb,我有一个Mongo DB“db1”,它的集合如下: 巧克力-2019年10月31日 巧克力-2019年10月30日 巧克力-2019年10月29日 巧克力-2019年10月28日 巧克力-2019年10月27日 2019年10月31日 Cookie-30-10-2019 Cookie-29-2019年10月 Cookie-28-2019年10月 Cookie-27-2019年10月 Cookie-26-10-2019 Bar-31-2019年10月 Bar-30-2019年10月 Bar-29

我有一个Mongo DB“db1”,它的集合如下:

  • 巧克力-2019年10月31日
  • 巧克力-2019年10月30日
  • 巧克力-2019年10月29日
  • 巧克力-2019年10月28日
  • 巧克力-2019年10月27日
  • 2019年10月31日
  • Cookie-30-10-2019
  • Cookie-29-2019年10月
  • Cookie-28-2019年10月
  • Cookie-27-2019年10月
  • Cookie-26-10-2019
  • Bar-31-2019年10月
  • Bar-30-2019年10月
  • Bar-29-2019年10月
  • Bar-28-2019年10月
  • Bar-27-2019年10月
我想数一数:

  • 仅收集巧克力和饼干的数量
  • 收藏文档数:仅限巧克力和饼干
使用MongoChef shell控制台,我可以在“db”中计算每个集合的所有文档,如下所示:

db.getCollectionNames()
.forEach(function(collection) 
{ resultCount = db[collection].count(); 
  print("Results count for " + collection + ": "+ resultCount);
  });
但不知道如何仅计算已定义的集合列表。

试试这个

已更新集合数计数。只要复制粘贴到控制台。 var-chCount=0; var coCount=0

db.getCollectionNames().forEach(function(collection) { 
if(collection.startsWith("Chocolate") || collection.startsWith("Cookie")){  
    if(collection.startsWith("Chocolate"))
        chCount=chCount+1;
    else if(collection.startsWith("Cookie"))
        coCount=coCount+1;
    resultCount = db[collection].count();    print("Results count for " + collection + ": "+ resultCount);   
}
});
print("Chocolate = "+chCount+", Cookie = "+coCount+".");   
您还可以将其写入.js文件,并使用以下命令执行

mongo --port=<port> <database> <any authentication if required> ex.js
mongo--port=ex.js

它适用于第二个点-集合的文档数:仅限巧克力和饼干。仍然只需要计算巧克力和饼干的收集数量。结果应该显示:巧克力=5,饼干=6。