如何在LocalField中为$ lookup Mongodb将字符串转换为objectId

Sau*_*rma 15 lookup join mongodb

我想$lookup在mongodb中添加联接集合.我正在尝试如下

{
 $lookup:{
   from:"User",
   localField:"assignedId",
   foreignField:"_id",
   as:"dataa"}
}
Run Code Online (Sandbox Code Playgroud)

现在我有两个系列

用户包含objectid的用户喜欢 "_id" : ObjectId("56ab6663d69d2d1100c074db"),

任务,其中包含assignedIdstring "assignedId":"56ab6663d69d2d1100c074db"

现在,当在两个集合中应用$ lookup时它不起作用,因为Id不匹配.

为此,我用Google搜索并找到了一个包含的解决方案

{ $project: { assignedId: {$toObjectId: "$assignedId"} }}

但这个解决方案不适合我,它抛出一个错误:

assert: command failed: { "ok" : 0, "errmsg" : "invalid operator '$toObjectId'", "code" : 15999 } : aggregate failed
Run Code Online (Sandbox Code Playgroud)

请帮助我如何解决此问题.

谢谢

Hoe*_*ert 5

这在聚合管道中是不可能的.没有方法可以转换类型.您可以将Tasks集合中"assignedId"的类型更改为ObjectId吗?否则你必须在代码中执行它,将ObjectId转换为String并在另一个查询中使用in.