目录

T の weblog

X

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" } }
  },

image.png

所以,写法改为

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

}}])

得到连接之后的结果


标题:mongodb连接查询,localField使用_id进行匹配不生效
作者:MingGH
地址:https://www.runnable.run/articles/2021/05/04/1620095666295.html