最近,我写了一个小应用程序,用pymongo查询来自MongoDB的数据。代码如下所示
colls = collection.find({'created': {'$gt': datetime.datetime(2014, 9, 14, 10),
'$lt': datetime.datetime(2014, 9, 14, 17)}},
{'created':1, '_id': 0})
print 'Totally count is ', colls.count()
到目前为止,一切都很好。然而,
results = []
for item in colls:
results.append(item)
我发现结果的长度小于 colls.count()。太奇怪了?为什么他们不一样?
答案 0 :(得分:0)
除非您在分片群集中运行此操作并点击this bug,否则您的结果表明集合中的元素多于查找查询中包含的元素。要验证,只需重新运行不带参数的查询:
colls = collection.find({}, {'created':1, '_id': 0});
然后将该长度与计数结果进行比较。
如果它们不同,那么只需切换谓词即可查看给定范围之外的值:
colls = collection.find({'created': {'$lt': datetime.datetime(2014, 9, 14, 10),
'$gt': datetime.datetime(2014, 9, 14, 17)}},
{'created':1, '_id': 0})
如果这对您没有任何帮助,并且您在created
上有索引,那么您可能在索引中包含非日期时间值,并且在查询时只有one type will match,因此您可以hint一个不同的索引,以确保它们被返回。