MongoDB聚合查询:筛选数组所有元素均属于指定数组的实现方法
你可以通过$setIsSubset聚合运算符实现该需求,该运算符用于判断第一个数组的所有元素是否全部包含在第二个数组中,完全匹配你的筛选规则。
具体聚合查询语句
// 给定的对比数组为 [1,2,4],yourCollectionName替换为你的实际集合名 db.yourCollectionName.aggregate([ { $match: { $expr: { // 判断当前文档的indexes数组是否是对比数组的子集 $setIsSubset: ["$indexes", [1, 2, 4]] } } } ])
运行结果
以上述示例集合运行该语句,返回结果和你预期完全一致:
{ "text" : "random text 1", "indexes" : [ 1, 2 ] } { "text" : "random text 3", "indexes" : [ 2, 4 ] }
补充说明
该运算会自动忽略数组内的重复元素,即使你的indexes字段存在重复值(如[1,1,2])也能正常匹配。
内容的提问来源于stack exchange,提问作者Ryokugin
相关产品推荐
相关产品推荐

