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"

}}])

得到连接之后的结果

# mongodb 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×