【发布时间】:2019-09-04 11:34:52
【问题描述】:
我有两个数据库。
- 一个包含用户信息的数据库。
- 一个包含销售信息的数据库。
我正在尝试聚合一个集合。我需要使用 localField 作为用户数据库中的用户 ID 进行 $lookup。
我该怎么做?
在猫鼬中,我可以使用populate 并指定我要使用的模型,如下所示:
.populate({
path: 'user',
select: 'name',
model: UserModelFromDifferentDB
})
但是在 $lookup 中我看不到这样的选项?
问题开始的示例:
const data = await Sale.aggregate([
{
$match: {
creator: Types.ObjectId("5d5154a37dcf4a00171c0018")
}
},
{
$lookup:
{
from: 'users', // no users collection in this DB, it is in the other db
localField: 'user',
foreignField: '_id',
as: 'user'
}
},
])
【问题讨论】:
-
请添加示例 I/O 和示例集合
-
用户集合和销售集合在单独的数据库中没有在单个数据库中?
-
@sushantmehta 是的!
-
为什么?它们在不同的数据库中吗?
-
无法在两个不同的数据库中使用查找进行查询。 mongodb 中的 $lookup 支持对同一数据库中的非分片集合执行左外连接。上面的链接中给出了替代方案。
标签: javascript node.js mongodb