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

Mongoose中如何正确校验对象数组中是否存在两个指定模型键值对

问题原因

你当前的写法存在两处问题:

  1. $all用于匹配数组包含所有指定的元素,此处搭配嵌套对象使用时,要求values数组存在与你写的{One: "One", Three: "Three"}完全相等的元素
  2. MongoDB的嵌套对象匹配默认是精确匹配,要求字段数量、键名、键值完全一致,实际存储的嵌套对象额外包含Two字段,因此匹配失败无返回结果。

修复方案

场景1:要求两个键值对存在于values数组的同一个嵌套对象中

使用$elemMatch操作符匹配同一数组元素的多字段条件,不会触发全对象精确匹配:

Model.find({
  "values": {
    $elemMatch: {
      One: "One",
      Three: "Three"
    }
  }
})

场景2:不要求两个键值对在同一个嵌套对象中

直接使用点路径指定字段匹配即可:

Model.find({
  "values.One": "One",
  "values.Three": "Three"
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:54:06