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

如何在Mongoose中查询包含指定userId的文档?

Mongoose 数组内嵌字段匹配查询方案

你的原始查询存在两处问题:

  • 语法错误:tagName: params.tag] 多了一个多余的右中括号
  • 查询逻辑错误:$in 用于匹配字段值是否在给定数组范围内,不适用数组内嵌对象的字段匹配场景

方案1:点语法匹配(单字段匹配首选)

直接用数组名.内嵌字段名的格式指定匹配条件,Mongoose会自动筛选出数组中任意元素满足该条件的文档:

const checkUser = await Tag.findOne({
  tagName: params.tag,
  "users.userId": params.userId
});

方案2:$elemMatch 匹配(多字段同元素匹配首选)

如果需要同时匹配同一个数组元素的多个字段(比如同时要求userId匹配、count大于指定值),使用$elemMatch可以保证所有条件命中同一个数组元素:

const checkUser = await Tag.findOne({
  tagName: params.tag,
  users: {
    $elemMatch: {
      userId: params.userId
      // 可追加同元素其他匹配条件,例如 count: {$gt: 1}
    }
  }
});

内容的提问来源于stack exchange,提问作者Иван Купач

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:24:01