我想在 mongodb 中使用 $lookup
添加连接集合。我正在尝试如下
{
$lookup:{
from:"User",
localField:"assignedId",
foreignField:"_id",
as:"dataa"}
}
现在我有两个系列
User 包含 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 Mongodb 的 LocalField 中将字符串转换为 objectId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41689349/
相关文章:
php - 如何单击表条目并在另一个 mongodb 集合(php/jquery)中搜索它
java - Spring数据mongo在Query中使用OR
node.js - 'this' 在 Mongoose 预保存 Hook 中未定义
mongodb - 为什么直接搜索 MongoDB 分片的全文搜索比通过集群管理器 (mongos)
mongodb - 如何从 Mongoose 中的对象 ID 获取创建日期?
mongodb - 如何在复杂的 Collection-Object 中附加新文档
spring - 使用 Spring 数据 MongoDB @Document 创建一个上限集合