mongodb连接查询,localField使用_id进行匹配不生效
情景再现
情景是这样的,我现在有两个文档 文档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"
}}])
得到连接之后的结果