使用MongoDB的Python - count()函数仅适用于空搜索?

时间:2013-11-27 16:21:11

标签: python mongodb

我的python脚本有一个奇怪的问题。 我需要在MongoDB中获得总数量的数据库托管

>>> a = _chatlog.find()
>>> a.count()
4120

像我计划的那样工作,是的

现在事情变得奇怪了:

>>> b = _chatlog.find({ "$query": {}, "$orderby": { "_id" : -1 }})
>>> b.count()
0

我执行此查询因为我需要按降序排列所有的命令。 首先,我期望一个空光标但不是:

for data in b:
c += 1

>>> c
4120

当我执行查询时,如何让count方法正常工作?

2 个答案:

答案 0 :(得分:1)

计数和排序不兼容。 (将排序顺序与计数结合起来也没有意义。)从查询中删除$orderby

请注意,如果您使用sort方法而不是$orderby,则count将按预期工作:

collection.find().sort([('_id', -1)]).count()

这是有效的,因为count只是忽略排序顺序。我重申,将排序和计数结合起来是没有意义的。

答案 1 :(得分:0)

我无法告诉你为什么查询修饰符不起作用,但它们也不适用于我。您使用的是旧版Mongo吗?

您是否可以使用“.sort()”代替?

自:

b = _chatlog.find({ "$query": {}, "$orderby": { "_id" : -1 }}).count()

要:

b = _chatlog.find({}).sort({_id:-1}).count()