在MongoDb关于tailable游标的文档中,它说明了以下内容:
如果您的查询位于索引字段上,请不要使用tailable游标,而是使用常规游标.跟踪查询返回的索引字段的最后一个值.要检索新添加的文档,请使用查询条件中索引字段的最后一个值再次查询集合
我正在设置查询以查找特定时间点之后的所有文档,然后在插入文档时保留它们.我想最简单的方法是在我想要的时候查询_id(假设我们使用的是ObjectIds,我们是).
由于_id是默认编入索引的,因此我用上一个_id继续轮询MongoDb有多糟糕并继续询问$ gt呢?我意识到这只能在1秒左右的精度内,因为ObjectIds只存储了自纪元以来的秒数,但我可以忍受,所以我假设我每秒至少要查询一次.
我想我只是惊讶于文档建议查询的方法(可能是在我的情况下不断),而不是保持一个可用的光标打开:我会认为推送会比拉动便宜吗?
如果您使用可尾游标,我可以想到一些问题:
除了上述内容之外,使用可尾游标还有一些注意事项,因为它们仅适用于有上限的集合。
$set操作都会起作用,并且不会$push或$pushAll会).remove()记录来自上限集合的内容用我得到的最后一个 _id 不断轮询 MongoDb 并不断询问 $gt 的东西有多糟糕?
IMO,轮询确实会带来延迟和不必要的忙等待,即使没有更新,但你可以控制很多事情。
从性能角度来看,只要您使用索引字段进行查询,就不应该有问题。