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

MongoDB中如何检查数组是否恰好包含指定元素(顺序无关)

MongoDB 查询数组恰好包含指定元素(顺序无关)

要实现数组仅包含['123','456']或['456','123'](顺序不影响,无其他元素)的查询,需要结合几个条件来精准匹配:

  • 用$all确保数组包含所有目标元素
  • 用$size限制数组长度必须等于目标元素的数量(此处为2)
  • 若要严格避免数组含重复元素(比如['123','123','456']这类不符合需求的情况),可以用$expr配合$setEquals直接对比集合

基础查询语句(适用于数组无重复元素的场景)

db.collection.find({
  users: {
    $all: ['123', '456'],
    $size: 2
  }
})

这个查询会返回所有users数组恰好包含'123'和'456'两个元素的文档,自动忽略元素顺序,同时保证数组无额外元素。

严谨版查询(支持自动去重后对比集合)

如果需要完全贴合set(users) == set(['123','456'])的逻辑,不管数组有没有重复元素,都可以用:

db.collection.find({
  $expr: {
    $setEquals: ['$users', ['123', '456']]
  }
})

$setEquals会直接对比两个数组的元素集合是否完全一致,自动忽略顺序和重复元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:01:14