MongoDB 中 $group 去重统计和 distinct 命令在能力和性能上差在哪?
围绕“MongoDB 中 $group 去重统计和 distinct 命令在能力和性能上差在哪”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 distinct 不能多字段组合、$group 可利用索引条件不同两点。
程序员面试题库第 53 页,收录第 2601–2650 题,共 5000 道完整解析,覆盖前端、JavaScript、React、Vue、Node.js、AI Agent、网络、数据库与系统设计。
按稳定语义路径排序
围绕“MongoDB 中 $group 去重统计和 distinct 命令在能力和性能上差在哪”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 distinct 不能多字段组合、$group 可利用索引条件不同两点。
围绕“MongoDB 哈希分片和范围分片在数据分布与范围查询上各牺牲了什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确均匀分布换范围查询跨片、范围友好换热点风险的对偶取舍。
围绕“MongoDB 4.2 之后优化的索引构建方式相比旧版减少了什么阻塞”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明新版在线构建锁粒度变化及副本集滚动建索引的适用条件。
围绕“MongoDB 的索引交集何时会触发,为什么不能依赖它替代复合索引”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确交集不保证排序且优化器可能不选它的原因。
围绕“MongoDB 聚合 $lookup 做关联时哪些写法会导致性能急剧下降”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确外字段无索引、大结果集及 $lookup 后 $unwind 的顺序问题。
围绕“MongoDB 官方为什么建议用聚合管道替代 map-reduce”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 5.0 起弃用、性能与表达能力两方面原因。
围绕“MongoDB 多文档事务有哪些时间、锁和写入量上的限制”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确默认事务时长上限、锁获取等待与 oplog 条目限制。
围绕“MongoDB 对数组字段建索引时多键索引的行为和限制是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确每个数组元素生成索引项及复合多键索引只允许一个数组字段的限制。
讲解MongoDB一对多关系建模中数组嵌入与子集合引用的选择边界,重点给出数组无界时的拆分阈值与判断依据,结合订单项和评论等场景说明各自适用条件和易错点。
围绕“MongoDB readConcern 的 local、majority、linearizable 在读到已提交数据”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 majority 防回滚读与 linearizable 的代价差异。
围绕“MongoDB readPreference 设为 secondary 时如何保证读到的数据不太旧”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 maxStalenessSeconds 与从库延迟监控的配合。
围绕“MongoDB 副本集主节点宕机时选举如何触发,期间写入会怎样”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确心跳超时、多数派要求与选举期间写不可用的窗口。
围绕“MongoDB 无固定 schema 下做字段演进,如何避免新旧文档混读出错”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出懒迁移、批量回填、schema 版本号字段三种路径及选择依据。
围绕“MongoDB 的 JSON Schema 校验器和应用层校验各自能保证什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 validationLevel 与 validationAction 对存量文档和写入的行为差异。
围绕“MongoDB 选择分片键时基数、频率、单调性三个维度如何权衡”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确低基数导致 jumbo chunk、单调键导致写热点两类失败的判断。
围绕“MongoDB 单文档原子性具体覆盖哪些操作,为什么跨文档更新需要事务”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确单文档内多字段更新的原子保证及嵌入建模如何规避事务。
围绕“MongoDB 单字段索引在区分度低的字段上为什么收益有限”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确低选择性时索引扫描加回表反而慢的判断依据。
围绕“MongoDB 排序超过内存限制报错的机制和解决方案是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确排序命中索引避免内存排序与 allowDiskUse 两条路径的取舍。
围绕“MongoDB 文本索引支持哪些查询能力,为什么一个集合只能有一个文本索引”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确词干化、停用词、权重与单文本索引限制,不与 Atlas Search 对比展开。
围绕“MongoDB 事务中读写冲突时会报错还是阻塞,应用该如何重试”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 TransientTransactionError/UnknownTransactionCommitResult 的错误分类与。
围绕“MongoDB 事务的快照隔离与传统关系型数据库的隔离级别有什么不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 readConcern snapshot 的语义及与关系库 MVCC 隔离的对应关系。
围绕“MongoDB TTL 索引过期删除是实时的吗,延迟来自哪里”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明后台线程周期清理导致延迟及分片/副本集上的行为。
围绕“MongoDB 聚合 $unwind 拆分数组时对空数组和缺失字段的默认行为是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确默认丢弃空/缺失数组文档及 preserveNullAndEmptyArrays 的影响。
围绕“在 MongoDB 中什么信号说明应该重构 schema 而不是依赖多文档事务”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须从事务开销、锁竞争、分片跨片事务代价给出重构判断标准。
围绕“MongoDB 通配符索引适合什么动态字段场景,有哪些类型不支持”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确对未知/多变字段建索引的收益与数组、地理位置等不支持类型的边界。
围绕“MongoDB writeConcern 的 w:1、w:majority、journaled 分别保证什么持久性”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确各档位在节点宕机下的数据丢失窗口。
围绕“NestJS 中如何注册依赖异步初始化(如数据库连接)的 Provider”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 useFactory 返回 Promise 时框架如何等待解析。
围绕“NestJS 的 beforeApplicationShutdown 钩子在停机流程中处于什么位置”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明它在收到终止信号后、连接清理前的位置及适合停止接收新任务的用途。
围绕“NestJS 内置的 ParseIntPipe、ParseBoolPipe 等解析管道失败时行为是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明内置解析管道的校验语义与默认 HTTP 异常。
围绕“NestJS 中两个模块或类循环依赖时如何用 forwardRef 解决”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出模块级与类级循环依赖的 forwardRef 用法,并指出根本解法是重构而非掩盖。
围绕“NestJS 中 ValidationPipe 如何配合 class-validator 的 DTO 做请求体校验”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清 DTO 装饰器校验、whitelist 与 forbidNonWhitelisted 的含义。
围绕“NestJS 的 ConfigurableModuleBuilder 相比手写 forRoot 有什么优势”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明它如何自动生成 register/forRoot 及 options token 的注入方式。
围绕“如何为 NestJS 编写一个把字符串 ID 转换为实体对象的自定义管道”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出一个带数据库查询的转换管道设计与失败处理。
围绕“NestJS 自定义 Provider 的 useClass、useValue、useFactory、useExis”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖逐一给出四种 Provider 注册方式的适用场景。
围绕“NestJS 动态模块的 forRoot/forFeature 约定解决了什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明可配置模块为何需要静态方法返回 DynamicModule。
围绕“NestJS 的 ExecutionContext 如何统一 HTTP、WebSocket 和微服务上下文”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 getType/switchToHttp 等 API 如何让守卫拦截器跨传输协议复用。
围绕“全局注册 NestJS 认证守卫后如何让某些路由跳过认证”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出基于元数据的 IS_PUBLIC 豁免模式及守卫内 reflector.getAllAndOverride 的读取。
围绕“NestJS 中 @Global() 全局模块的适用场景和滥用风险是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出适合全局化的基础设施类型与全局模块破坏显式依赖的风险。
围绕“NestJS 管道绑定在全局、控制器、方法、参数四个级别有何区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要比较四种绑定位置的执行范围与选择依据。
围绕“为什么 NestJS 守卫设计为在拦截器之后、管道之前执行”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖从认证授权应先于参数验证、但拦截器需包裹整个调用链的角度解释顺序设计。
围绕“NestJS 守卫的 canActivate 如何通过 ExecutionContext 判断放行”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明守卫返回 boolean/Promise/Observable 的语义与拒绝时抛出的异常。
围绕“NestJS 守卫和 Express 中间件在职责上如何分工”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖从执行时机、能否访问 ExecutionContext、依赖注入能力三方面区分。
围绕“NestJS 中什么时候必须用 @Inject() 装饰器显式注入”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清基于类的注入与基于字符串/Symbol token 注入的区别。
围绕“NestJS 拦截器在控制器级、方法级和全局级注册各有什么影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 @UseInterceptors 与 APP_INTERCEPTOR token 全局注册的区别。
围绕“NestJS 拦截器适合实现日志耗时统计与响应缓存的理由是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖从横切关注点角度说明为何选拦截器而非管道或守卫。
围绕“如何用 NestJS 拦截器统一捕获并映射下游抛出的异常”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明在 pipe 中用 catchError 转换异常的写法及与异常过滤器的职责分工。
围绕“NestJS 拦截器如何用 RxJS 操作符统一包装响应格式”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 intercept 返回 next.handle().pipe(map()) 的响应变换模式。
围绕“NestJS 请求经过中间件、守卫、拦截器、管道的执行顺序是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖按请求流入与响应流出两阶段给出完整顺序。
围绕“NestJS 中基于 Passport 的 JWT 认证守卫如何与 @UseGuards 结合”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 AuthGuard('jwt') 触发策略校验与公开接口豁免的常见做法。
围绕“NestJS 的懒加载模块适合什么场景,如何实现”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明按需加载减少冷启动的机制与适用场景(如 CRON/CLI)。