【发布时间】:2023-03-23 19:39:01
【问题描述】:
我有 2 个收藏品如下:
事件
{
"_id" : ObjectId("61f272dd1fac703fec69105a"),
"eventActivity" : [
ObjectId("61f76703196ea94bd43fa92e"),
]
}
事件活动
{
"_id" : ObjectId("61f76703196ea94bd43fa92e"),
"activity" : ObjectId("61f2a69bfe99e07db083de50"),
}
基于上面的集合,event 有eventActivity 字段,它指的是event-activity 集合。我正在尝试按event-activity.activity 的值过滤事件。
例如,如果我的过滤选择在数组['61d6b2060d6fe32d9853ad40', '61f2a69bfe99e07db083de50'] 中有活动,它将返回该事件。如果过滤选择的活动 ID 为 ['61d6b2060d6fe32d9853ad40'],则不应返回任何事件,因为 event-activity
我无法真正理解聚合查找的工作原理,但我试过了,但它不起作用。
event.aggregate([
{"$lookup":{
"from":"event-activity",
"localField":"activity",
"foreignField":"_id",
"as":"event-activity"
}},
{
"$match":{
"event-activity.activity":{
"$in":["61d6b2060d6fe32d9853ad40","61f2a69bfe99e07db083de50"]
}
}
}
])
我提到了manual here
或者可以由find()代替吗?
【问题讨论】:
标签: mongodb mongoose aggregate lookup