You need to enable JavaScript to run this app. 如何在MongoDB中实现嵌套文档数组的多值匹配查询
优惠活动
大模型
产品
解决方案
定价
更多

如何在MongoDB中实现嵌套文档数组的多值匹配查询

MongoDB多爱好匹配查询方案

你可以通过以下两种常用方式实现需求,两种写法返回结果完全一致:

写法1:使用$all操作符(最简洁)

$all是MongoDB原生用于数组字段匹配的操作符,会筛选出数组包含所有指定值的文档,代码如下:

Student.find({
  "hobbies.hobbyName": { $all: ["Coding", "Sleeping"] }
})

逻辑说明:要求hobbies数组下的hobbyName字段同时包含Coding和Sleeping两个值,学生存在其他额外爱好不影响匹配结果。

写法2:使用$and操作符组合条件(可读性更强)

如果后续需要给不同爱好附加额外过滤条件(比如要求Coding的熟练度是Beginner),用$and组合的方式拓展性更好:

Student.find({
  $and: [
    { "hobbies.hobbyName": "Coding" },
    { "hobbies.hobbyName": "Sleeping" }
  ]
})

验证结果

用你提供的测试数据执行上述查询,只会返回name为John的学生文档,Michael因为缺少两个指定爱好不会被命中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 17:51:00