【发布时间】:2018-04-13 05:05:27
【问题描述】:
我正在使用 MongoDB Aggregation 来查询两个不同的架构集合。
Artist.aggregate([
{
$match: { artistID }
},
{
$lookup: {
from: "users",
localField: "userID",
foreignField: "_id",
as: "UsersWithMatchedArtist"
}
},
{
$project: {
UsersWithMatchedArtist: 1
}
}
}
])
这将返回以下数据结构。
[
{
"_id": "59f8f40686f2fa623d815256",
"UsersWithMatchedArtist": [{Users Schema}]
},
{
"_id": "59f8f40686f2f12345678901",
"UsersWithMatchedArtist": [{Users Schema}}]
}
]
我希望数据按以下结构返回
[
{Users Schema},
{Users Schema}
]
关于如何做到这一点的任何建议?建议将不胜感激!干杯!
【问题讨论】:
-
使用
$unwind和$replaceRoot。或者$projectUsers Schema中的每个字段在$unwind之后,如果你没有$replaceRoot。还是您实际上是在要求“返回所有拥有艺术家条目的用户”?$match阶段暗示前者而不是后者,但您的问题可能更清楚。 -
谢谢伙计,$replaceRoot 看起来棒极了!
标签: node.js mongodb mongoose nosql