当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在LocalField中为$lookupMongodb将字符串转换为objectId》经验,为你挑选了1个好方法。

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

{
 $lookup:{
   from:"User",
   localField:"assignedId",
   foreignField:"_id",
   as:"dataa"}
}

现在我有两个系列

用户包含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

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

谢谢



1> 小智..:

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

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有