出了点问题,我不明白为什么。我有一个曾经可以正常运行的脚本,但是突然停下来了。这基本上是对大型Mongo集合(600gb +)的mongo查询。
以下是查询:
db.action_traces.findOne( {"block_time": {"$lt": "2018-07-15T00:00:00.000Z"} } ).pretty()
最初我没有使用findOne,但我将结果限制为一个,以防万一我可以帮忙,但结果是相同的:什么也没发生。
如果我只是运行一个find
查询,那会很好。
mongodb日志中没有显示任何内容,并且syslog中也没有任何显示内容。
Mongo显然有问题,因为htop向我展示了这一点:
mongo进程在波动,但大多数情况下会占用一个CPU线程100%。
有人可以帮忙吗?
在此先感谢
答案 0 :(得分:1)
听起来像是在整个收藏集中拖拉-您是否在block_time
上添加了索引?
.find()
返回一个光标,该光标指向第一组匹配的文档,如果未指定排序顺序,则默认为默认顺序(自然顺序)。
.findOne()
返回单个文档-附带条件是,如果您的查询匹配多个文档,则它将使用其“自然顺序”并返回第一个文档(这意味着它需要首先查找所有匹配项)。
我猜您的馆藏需要在该字段上建立索引-这意味着它可以在不进行全面扫描的情况下查找结果。