情景再现
情景是这样的,我现在有两个文档
文档 A
_id | name |
---|---|
6090acbd682e000028007e74 | jack |
6090acbd682e000028007e75 | rose |
文档 B
_id | a_id | state |
---|---|---|
6787848807839043584 | 6090acbd682e000028007e74 | 1 |
6787848807839043585 | 6090acbd682e000028007e75 | 0 |
然后需要连接查询文档 A 和文档 B
在 mysql 上我们可以
select * from A left join B on A._id=B.a_id
但是 mongodb 的话我们需要通过 aggregate 实现,
起初写的 sql 是
db.A.aggregate([
{$lookup:{
from: "B",
localField: "_id",
foreignField: "a_id",
as: "success_id"
}}])
发现根本没有关联值,
解决
在 Stack Overflow 上找到相似问题,原来需要在 sql 上加
{
$addFields: { "_id": { "$toString": "$_id" } }
},
所以,写法改为
db.A.aggregate([
{
$addFields: { "_id": { "$toString": "$_id" } }
},
{$lookup:{
from: "B",
localField: "_id",
foreignField: "a_id",
as: "success_id"
}}])
得到连接之后的结果
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于