我的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方法正常工作?
答案 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()