【发布时间】:2019-07-11 09:42:48
【问题描述】:
我的 MongoDB 集合中的文档非常频繁地更改状态字段。我可以很清楚地看到它,使用 mongoDB 客户端(Robo 3T)。
现在我想使用mongo shell 监控这个过程:
mongo --host=localhost db --eval "db.getCollection('events').find({status:'ACTIVE'}).count()"
这会返回一个正确的结果,但随后 mongoDB 会“缓存”它,并且在大约 10 秒内不会返回更新的结果。我需要每 200 毫秒更新一次。
来自 Robo 3T 的相同查询始终返回更新的结果,大约 5 毫秒。
根据我的观察,当负载较低时,每个请求都会更新 mongo shell 计数。
我在 MongoDB 文档中找不到任何类似缓存的机制信息。我怎样才能禁用它?为什么 Robo 3T 可以正常工作?
附言
我使用 python 脚本观察到相同的行为,该脚本使用 count() 查询轮询 mongo - 结果被缓存。但是一旦我开始在 Robo 3T 中执行查询,数字就开始在 python 和 mongo shell 中移动!发生了什么?
【问题讨论】:
标签: mongodb mongo-shell robo3t