如何在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
相关产品推荐
相关产品推荐

