我想$lookup
在mongodb中添加联接集合.我正在尝试如下
{ $lookup:{ from:"User", localField:"assignedId", foreignField:"_id", as:"dataa"} }
现在我有两个系列
用户包含objectid
的用户喜欢 "_id" : ObjectId("56ab6663d69d2d1100c074db"),
和 任务,其中包含assignedId
为string
"assignedId":"56ab6663d69d2d1100c074db"
现在,当在两个集合中应用$ lookup时它不起作用,因为Id不匹配.
为此,我用Google搜索并找到了一个包含的解决方案
{ $project: { assignedId: {$toObjectId: "$assignedId"} }}
但这个解决方案不适合我,它抛出一个错误:
assert: command failed: { "ok" : 0, "errmsg" : "invalid operator '$toObjectId'", "code" : 15999 } : aggregate failed
请帮助我如何解决此问题.
谢谢
这在聚合管道中是不可能的.没有方法可以转换类型.您可以将Tasks集合中"assignedId"的类型更改为ObjectId吗?否则你必须在代码中执行它,将ObjectId转换为String并在另一个查询中使用in.