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

Mongoose如何查询同时匹配parent字段及列表中任意年月组合的文档?

问题原因分析

你之前使用$elemMatch不生效的核心原因是:$elemMatch是专门用于匹配数组类型字段中的元素的操作符,而你的year和month都是文档顶层的普通数值字段,不存在数组嵌套结构,因此不符合$elemMatch的使用场景。

正确实现方案

你可以使用$or操作符实现多组年月组合的匹配,具体逻辑是先将你的年月组合列表映射为独立的匹配条件,再和parent字段的匹配条件组合即可,代码示例如下:

// 你的年月组合列表
const datePairs = [
  { year: 2021, month: 1 },
  { year: 2021, month: 0 },
  { year: 2020, month: 11 },
  { year: 2020, month: 10 }
]

// 构造查询条件
const query = {
  parent: 1,
  $or: datePairs.map(pair => ({ year: pair.year, month: pair.month }))
}

// 执行查询
const foundDocuments = await Document.find(query)
结果说明

按照你给出的年月组合列表,上述查询会返回4条符合条件的文档(id为8、9、10、11),你给出的预期输出少了id=11的记录,若确实需要排除该记录,只需把年月组合列表中的{ year: 2020, month: 10 }项删除即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:09:01