查找数组字段至少包含给定数组的 n 个元素的文档

2024-01-02

基本上就是标题所说的。

Input: myArray= 单词数组

我有一个有字段的模型wordsCollection,这是一个数组字段。

我怎样才能找到该型号的所有文档wordsCollections至少有 n 个元素myArray


假设我们收集了以下文档:

{ "_id" : ObjectId("5759658e654456bf4a014d01"), "a" : [ 1, 3, 9, 2, 9, 0 ] }
{ "_id" : ObjectId("5759658e654456bf4a014d02"), "a" : [ 0, 8, 1 ] }
{ "_id" : ObjectId("5759658e654456bf4a014d03"), "a" : [ 0, 8, 432, 9, 34, -3 ] }
{ "_id" : ObjectId("5759658e654456bf4a014d04"), "a" : [ 0, 0, 4, 3, 2, 7 ] }

以及以下输入数组和n = 2

var inputArray = [1, 3, 0];

我们可以使用聚合框架返回数组字段至少包含给定数组的 n 个元素的文档。

The $match https://docs.mongodb.com/manual/reference/operator/aggregation/match/仅选择数组长度大于或等于的文档n。这减少了管道中要处理的数据量。

The $redact https://docs.mongodb.com/manual/reference/operator/aggregation/redact/管道运算符使用逻辑条件处理使用$cond https://docs.mongodb.com/manual/reference/operator/aggregation/cond/操作员和特殊操作$$KEEP https://docs.mongodb.com/manual/reference/operator/aggregation/redact/#keep“保留”逻辑条件为真的文档或$$PRUNE https://docs.mongodb.com/manual/reference/operator/aggregation/redact/#prune“丢弃”条件为假的文档。

在我们的例子中,条件是$gte https://docs.mongodb.com/manual/reference/operator/aggregation/gte/如果$size https://docs.mongodb.com/manual/reference/operator/aggregation/size/两个数组的交集,我们使用以下方法计算$setIntersection https://docs.mongodb.com/manual/reference/operator/aggregation/setIntersection/运算符大于或等于2.

db.collection.aggregate(
    [ 
        { "$match": { "a.1": { "$exists": true } } }, 
        { "$redact": { 
            "$cond": [ 
                { "$gte": [ 
                    { "$size": { "$setIntersection": [ "$a", inputArray ] } }, 
                    2
                ]},
                "$$KEEP", 
                "$$PRUNE" 
            ]
        }}
    ]
)

其产生:

{ "_id" : ObjectId("5759658e654456bf4a014d01"), "a" : [ 1, 3, 9, 2, 9, 0 ] }
{ "_id" : ObjectId("5759658e654456bf4a014d02"), "a" : [ 0, 8, 1 ] }
{ "_id" : ObjectId("5759658e654456bf4a014d04"), "a" : [ 0, 0, 4, 3, 2, 7 ] }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找数组字段至少包含给定数组的 n 个元素的文档 的相关文章

随机推荐