MongoDB Atlas显示文档数与count()及mongosh查询结果不符的问题咨询
Atlas控制台自带过滤或视图限制
Atlas集合页面默认可能藏着过滤条件,比如只显示最近一段时间的文档,或者自动排除了不符合默认规则的条目。你可以手动在控制台的查询框里执行db.call_logs.find({}),看看能不能调出全部3条文档,同时检查有没有默认的过滤语句被悄悄加上了。权限限制(账号或字段级)
不管是Atlas控制台用的账号,还是Node.js应用连接数据库的账号,要是被设置了文档级权限或者字段级权限,就会看不到部分文档。比如账号被限制只能看满足特定条件的文档,或者没法读取某些字段,这时候控制台和应用返回的结果自然不全。去Atlas的数据库用户配置里查一下权限,确认有没有额外的限制。分片集群同步延迟或控制台缓存
如果你的集群是分片的,可能存在数据同步慢的情况——mongosh连的是主节点,能拿到最新数据,而Atlas控制台读的是副本节点,数据还没同步完。另外Atlas控制台可能有缓存,没实时更新,刷新页面或者等几分钟再看看。文档含特殊BSON类型
有些特殊的BSON类型,比如二进制数据、超大字段、特殊格式的日期,Atlas控制台可能解析不了或者显示不了,直接把这类文档藏起来了,但mongosh能正常输出。你可以看看那一条看不到的文档,是不是有这类特殊结构。Node.js应用查询逻辑问题
检查Node.js代码里的查询语句,是不是不小心加了过滤条件(比如find({status: 'done'})),或者用了limit()、skip()导致结果被截断。另外看看驱动版本是不是太旧,旧版本驱动可能对新BSON类型支持差,读不出部分文档。
内容的提问来源于stack exchange,提问作者KhalifaYakub

