我的MongoDB集合中的文档经常更改状态字段。我可以使用mongoDB客户端(Robo 3T)清楚地看到它。
现在我想使用mongo
shell监控这个过程:
mongo --host=localhost db --eval "db.getCollection('events').find({status:'ACTIVE'}).count()"
这将返回正确的结果,但随后mongoDB“缓存”它并且不会再返回更新的结果~10秒。我需要每200毫秒更新一次。
来自Robo 3T的相同查询总是返回更新的结果,大约5ms。
根据我的观察,当负载较低时,每次请求都会发生mongo shell计数更新。
我在MongoDB文档中找不到任何类似缓存的机制信息。我该如何禁用它?为什么Robo 3T能正常工作?
P.S
我观察到与python脚本相同的行为,它使用count()查询轮询mongo - 结果被缓存。但是一旦我开始在Robo 3T中执行查询,数字开始在python和mongo shell中移动!怎么了?
使用实际在现有迭代器上执行查询的itcount()。
mongo --host=localhost db \
--eval "db.getCollection('events').find({status:'ACTIVE'}).itcount()"