我有一个包含类似文件的集合。实体字段未在每个文档中设置,并且具有不同的值:
{
"_id" : ObjectId("5388cfbdec82ba7cd5438635"),
"name" : "Name1",
"entity" : [
"Entity1",
"Entity2",
"Entity4",
"Entity5"
]
}
现在我想找到所有包含给定数组的x值的文档:["Entity1","Entity2","Entity3","Entity4"]
对于上面发布的文件,值Entity1,Entity2,Entity4匹配:
答案 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 } }
]);