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

MongoDB数组查询:如何获取Keys为["apple"]的指定文档?

解决MongoDB数组子集匹配查询的问题

嘿,这个需求我太懂了!你要找的是文档中Keys数组的所有元素都完全包含在指定列表["apple","other"]里的记录,对吧?

首先得明确:普通的$in查询在这里行不通——因为$in只要数组里有一个元素匹配就会返回结果,这样那个包含["apple", "orange"]的fruit2文档也会被捞出来,不符合你的期望。

正确的做法是用MongoDB的$expr结合$setIsSubset聚合表达式,它专门用来判断一个集合是不是另一个集合的子集。具体查询语句如下:

db.multiArr.find({
  $expr: {
    $setIsSubset: ["$Keys", ["apple", "other"]]
  }
})

为什么这个能行?

  • $expr允许我们在查询条件里使用聚合管道的表达式,突破了普通查询的限制
  • $setIsSubset接收两个参数:第一个是文档里的Keys数组(用$Keys引用字段),第二个是我们指定的目标列表["apple","other"]
  • 只有当Keys里的每一个元素都存在于目标列表中时,这个条件才会返回true,也就只会匹配到{"ID" : "fruit2","Keys" : ["apple"]}这一条文档

你可以直接把这段代码复制到Mongo Shell里执行,就能得到你想要的结果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:51:52