You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过MongoDB查询替代外部循环实现多字段精准匹配?

解决MongoDB多字段成对匹配查询问题

你原来的查询用$in分别匹配questionId和submissionCount,会把所有满足「questionId是1/2 且 submissionCount是1/2」的文档都查出来,这就包含了你不需要的questionId=1且submissionCount=1的记录。要实现字段成对匹配的需求,直接用$or把每组对应条件包起来就行:

正确的查询语句

let history = await this.dbCollection
    .find({
      userId: 1,
      attemptNum: 2,
      $or: [
        { questionId: 1, submissionCount: 2 },
        { questionId: 2, submissionCount: 1 }
      ]
    })
    .lean();

说明

  • $or里的每个对象都是一组精确的成对条件,要么是questionId=1且submissionCount=2,要么是questionId=2且submissionCount=1
  • 外层的userId和attemptNum是全局过滤条件,不需要额外嵌套$and(MongoDB默认多个查询条件为逻辑与关系)

这样查询出来的结果就是你预期的两条记录,无需再做外部循环过滤。

内容的提问来源于stack exchange,提问作者CodeBug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:01:01