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

MongoDB查询疑问:为何含部分符合条件车辆的文档未被返回

正确的MongoDB查询方式解析

问题原因分析

你原来的查询存在两个关键问题:

  • 字段位置错误:你写的"state":1是在根文档层面匹配,但实际state是嵌套在driver_vehicles数组的子文档中。
  • 逻辑匹配错误:"driver_vehicles.vehicledates.trip_date": {$nin: ["Dec 1, 2022"]}的逻辑是要求所有车辆的所有行程日期都不能是"Dec 1, 2022",但你的需求是存在至少一辆车辆满足条件,所以这个逻辑正好相反。

正确查询语句

要实现「存在至少一辆满足无2022年12月1日行程且state:1的车辆」的查询需求,需要使用$elemMatch来组合子文档的多个匹配条件:

db.vehicle_list.find({
  "driver_vehicles": {
    "$elemMatch": {
      "state": 1,
      "vehicledates.trip_date": { "$nin": ["Dec 1, 2022"] }
    }
  }
})

查询逻辑说明

  • $elemMatch会遍历driver_vehicles数组,检查是否存在至少一个子文档同时满足两个条件:
    1. 子文档的state字段等于1
    2. 该子文档的vehicledates数组中,没有任何一个trip_date等于"Dec 1, 2022"(空数组也满足此条件,因为没有元素匹配)
  • 这样就能正确匹配到driver为1的文档,因为Car1(空行程数组+state=1)和Car3(行程日期为Dec 2+state=1)都符合子文档的匹配条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:05:44