模式如下:
{
"_id": ObjectId("..."),
"views": [
{
"name": "AAA",
"permissions": ['PERM_1','PERM_2']
},
{
"name": "BBB",
"permissions": ['PERM_2']
},
{
"name": "CCC",
"permissions": ['PERM_3']
}]
}
我希望获得包含'PERM_1'和'PERM_3'的视图的结果,如下所示:
{
"_id": ObjectId("..."),
"views": [
{
"name": "AAA",
"permissions": ['PERM_1','PERM_2']
},
{
"name": "CCC",
"permissions": ['PERM_3']
}]
}
但是,我并没有真正成功获得我想要的结果。这是我的查询:
Schema.aggregate([
{
$project: {
views: {
$filter: {
input: '$views.permissions',
as: 'perm',
cond: {
????? // return only PERM_1 and PERM_3
}
}
}
}
}])
谢谢你的帮助。
条件的内容可以是:
$filter: {
input: '$views',
as: 'perm',
cond: {
cond: {
$gt: [
{
$size: {
$setIntersection: ['$$perm.permissions',['PERM_1','PERM_2']],
},
},
0,
],
},
}
}
您可以查看mongo技术文档以获取更多详细信息