与 mongodb (JOIN) 反向的查找聚合查询
Lookup aggregation query inverse with mongodb (JOIN)
假设我有两个集合(actors
和 actions
),其中一个 actor
有 N actions
。在 actions
集合中,我有一个 actorId
引用 actors
集合。
根据 the documentation,我可以用他们的 actor
得到所有 actions
像这样(有效):
db.actions.aggregate([
{
'$unwind': '$actorId'
},
{
$lookup: {
from: 'actors',
localField: 'actorId',
foreignField: '_id',
as: 'actor'
}
},
{
'$unwind': '$actor'
}
]);
有没有办法进行逆向查询?我可以从 actors
获得关联 actions
吗?
db.actors.aggregate(/* how can I get actions? */);
它的工作方式相同,$lookup returns 一个匹配文档数组,因此要 运行 反向查询您需要以下聚合:
db.actors.aggregate([
{
$lookup: {
from: 'actions',
localField: '_id',
foreignField: 'actorid',
as: 'actions'
}
}
]);
假设我有两个集合(actors
和 actions
),其中一个 actor
有 N actions
。在 actions
集合中,我有一个 actorId
引用 actors
集合。
根据 the documentation,我可以用他们的 actor
得到所有 actions
像这样(有效):
db.actions.aggregate([
{
'$unwind': '$actorId'
},
{
$lookup: {
from: 'actors',
localField: 'actorId',
foreignField: '_id',
as: 'actor'
}
},
{
'$unwind': '$actor'
}
]);
有没有办法进行逆向查询?我可以从 actors
获得关联 actions
吗?
db.actors.aggregate(/* how can I get actions? */);
它的工作方式相同,$lookup returns 一个匹配文档数组,因此要 运行 反向查询您需要以下聚合:
db.actors.aggregate([
{
$lookup: {
from: 'actions',
localField: '_id',
foreignField: 'actorid',
as: 'actions'
}
}
]);