【发布时间】:2021-10-12 08:27:49
【问题描述】:
我有这样的文档
{
"_id" : "oidfi",
"users": [
{
"_id": "q",
"tags": ["a", "b", "c"],
"age": 20
},
{
"_id": "q",
"tags": ["x", "y", "z"],
"age": 30
}
],
"type": "repo"
}
我想用几个字段过滤用户数组(我可以通过下面的查询来做到这一点)
{
"$match": {
"$and": [
{
"_id": "a506f8af6f510f616bea14715276d474d2b363f0aef10443cc0f11559b139147"
}
]
}
},
{
"$project": {
"users": {
"$filter": {
"input": "$users",
"as": "users",
"cond": {
"$and": [
{
"$gte": [
"$$user.age",
15
]
}
]
}
}
}
}
}
]
有没有办法让我添加条件,我给出一个标签项目列表并从他们的标签数组中获取至少匹配一个项目的用户
$$user.tags.containsAny(["a", "x"])
谢谢
【问题讨论】:
-
这正是$in operator 的用途。
标签: arrays mongodb mongodb-query aggregation-framework