MongoDB:如何统计多个集合中文档的数量?

3

我有多个MongoDB集合,例如:

 1. First
 2. Second
 3. Third

我只想从集合中计算所有记录的数量:

为此,我正在使用

db.First.find().count()  // Show total number of records from First
db.Second.find().count()   // Show total number of records from Second
db.Third.find().count()    // Show total number of records from Third

将所有结果相加,以获取记录的总数。

如何通过单个查询从所有集合中获取记录的总数?

或者

最佳方法是什么?


2
一个查询?你不能,基本上是因为“它们是单独的集合”,而MongoDB一次只能操作一个集合。你可以使用$facet做一些愚蠢的事情,但那些是“强制计数”,而不是“游标计数”,后者更有效率。所以更好、更可扩展的方法是简单地迭代集合列表并获取计数。这实际上将从缓存的集合统计数据中获取,而不是通过计算每个文档来获取。 - Neil Lunn
2个回答

4
它将提供数据库中的所有文档数量,包括system.js文档。

db.stats().objects;


3
你可以在@mongodb中编写自己的函数来计算所有文档的数量。

var collections = db.getCollectionNames();
var count = 0;

for (var i = 0; i < collections.length; i++) {
  count += db.getCollection(collections[i]).count();
}


我只想在Mongo shell中使用Mongo查询来完成这个任务,仅使用查询语句。 - helpdoc
@SNTiwari 现在它可以了。 - Gianfranco P.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接