mongoengine:计算集合中文档的数量而不检索所有文档
mongoengine: count the number of documents in a collection without retrieving all the documents
假设我有一个名为 class 的 Posts,它对应于一个 mongodb 集合。如果我做 Posts.objects.count()。当然它会给我文档的数量,但是它首先构造 QuerySet 然后计算里面的项目数。我的集合有数千万个文档,这样做会产生很高的开销。有没有一种方法可以在不从 mongodb?
中实际检索文档的情况下计算文档的数量
我通过查看源代码发现了这一点。尽管这种方式很粗略,但它确实有效。每个 Document 子类都有一个名为 _get_collection() 的方法,它使您可以连接到与子类对应的集合。然后在此连接上使用 pymongo 调用。
假设我有一个名为 class 的 Posts,它对应于一个 mongodb 集合。如果我做 Posts.objects.count()。当然它会给我文档的数量,但是它首先构造 QuerySet 然后计算里面的项目数。我的集合有数千万个文档,这样做会产生很高的开销。有没有一种方法可以在不从 mongodb?
中实际检索文档的情况下计算文档的数量我通过查看源代码发现了这一点。尽管这种方式很粗略,但它确实有效。每个 Document 子类都有一个名为 _get_collection() 的方法,它使您可以连接到与子类对应的集合。然后在此连接上使用 pymongo 调用。