python 2.7
pymongo 2.8
mongodb 3.0.2
start = time.time()
dynamic_strategies = self.mongo.strategy.find({'enabled': 1, '$or': [{'os': os}, {'os': 'all'}]})
print 'time used 1: ', str(time.time() - start)
for dynamic_strategy in dynamic_strategies:
print 'time used 2: ', str(time.time() - start)
self.mongo
类似于pymongo.MongoClient(uri)[dbname]
输出:
时间使用1:0.000109910964966
使用时间2:0.0460259914398
或:
时间使用1:9.3936920166e-05
使用时间2:0.0606229305267
奇怪的是因为光标中只有一行数据,甚至我把代码更改为:
start = time.time()
dynamic_strategies = self.mongo.strategy.find({'enabled': 1, '$or': [{'os': os}, {'os': 'all'}]})
print 'time used 1: ', str(time.time() - start)
strategy = dynamic_strategies[0]
print 'time used 3: ', str(time.time() - start)
OUTPUT与以前相同。
我已经做了一些其他的经历并得出结论:
在调用游标对象dynamic_strategies
的任何方法时,我将首先花费大约50ms,我不知道为什么。有人可以告诉我为什么吗?
提前谢谢。
更新:mongodb服务器是本地服务器,因此不一定是网络成本。
UPDATE 2 :我发现只有当我使用命令mongod --dbpath mongodb --auth &
启动mongo并使用用户名/密码连接时,才会发生上述结果。如果没有授权步骤,它就像我预期的那样快。