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

MongoDB 5.0.6:查询user数组中country与originalCountry全匹配的文档

正确查询方案

你的需求是筛选出data.user数组中所有元素的country字段均等于同元素originalCountry字段的文档,以下是针对MongoDB 5.0.6的可行方案:

方法1:使用find()结合$not、$elemMatch和$expr

db.collection.find({
  $not: {
    "data.user": {
      $elemMatch: {
        $expr: { $ne: ["$country", "$originalCountry"] }
      }
    }
  }
})

方法2:使用聚合管道$match阶段

如果需要后续进行更多数据处理,也可以用聚合管道实现:

db.collection.aggregate([
  {
    $match: {
      $not: {
        "data.user": {
          $elemMatch: {
            $expr: { $ne: ["$country", "$originalCountry"] }
          }
        }
      }
    }
  }
])

原查询的问题分析

  1. 字段引用错误:普通查询条件中,$ne无法直接用字符串引用文档内的其他字段,必须通过$expr才能实现字段间的比较逻辑。
  2. 逻辑方向相反:你原查询是在查找**存在至少一个元素country不等于originalCountry**的文档,和你需要的“所有元素均相等”的逻辑完全相反,因此返回结果不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:04:55