Mongo 查找数组包含给定数组的 x 值的文档

2023-12-10

我有一个收藏,其中有类似的文件。实体字段并不是在每个文档中都设置的,并且具有不同的值:

{
    "_id" : ObjectId("5388cfbdec82ba7cd5438635"),
    "name" : "Name1",
    "entity" : [ 
        "Entity1", 
        "Entity2", 
        "Entity4",
        "Entity5"
    ]
}

现在我想找到包含给定数组的 x 值的所有文档:["Entity1","Entity2","Entity3","Entity4"]

预期结果

对于上面发布的文档,Entity1、Entity2、Entity4 的值是匹配的:

  • x = 4 不应找到文档(3 个匹配值,但 x 为 4)
  • 应该找到 x = 3 文档(3 个匹配 -> 大小 = x)
  • x = 2 不应找到文档(3 个匹配值,但 x 为 2)
  • x = 1 不应找到文档(3 个匹配值,但 x 为 1)

您可以使用.aggregate为了这。这可能就是您正在寻找的:

var y = ["Entity1", "Entity2", "Entity3", "Entity4"];
db.col.aggregate([
    {
        $project :
        {
            _id : 1,
            name : 1,
            entity : 1,
            x : {
                $size : {
                    $ifNull: [{$setIntersection : ["$entity", y]}, []]
                }
            }
        } 
    },
    { $match : { x : 3 } }
]);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mongo 查找数组包含给定数组的 x 值的文档 的相关文章

随机推荐