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

时间:2014-06-04 07:14:50

标签: mongodb nosql

我有一个包含类似文件的集合。实体字段未在每个文档中设置,并且具有不同的值:

{
    "_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)

1 个答案:

答案 0 :(得分:1)

您可以使用聚合。这可能是您正在寻找的:

var y = ["Entity1", "Entity2", "Entity3, "Entity4"];
db.coll.aggregate([
    {
        $project :
        {
            _id : 1,
            name : 1,
            entity : 1,
            x : {
                $size : {
                    $ifNull: [{$setIntersection : ["$entity", y]}, []]
                }
            }
        } 
    },
    { $match : { x : 3 } }
]);