跳到主要内容

mongodb连接查询,localField使用_id进行匹配不生效

情景再现

情景是这样的,我现在有两个文档 文档A

_idname
6090acbd682e000028007e74jack
6090acbd682e000028007e75rose

文档B

_ida_idstate
67878488078390435846090acbd682e000028007e741
67878488078390435856090acbd682e000028007e750

然后需要连接查询文档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" } }
},

image.png

所以,写法改为

db.A.aggregate([
{
$addFields: { "_id": { "$toString": "$_id" } }
},
{$lookup:{
from: "B",
localField: "_id",
foreignField: "a_id",
as: "success_id"

}}])

得到连接之后的结果