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