我想在mongodb中使用$lookup
添加联接集合。我正在尝试如下
{
$lookup:{
from:"User",
localField:"assignedId",
foreignField:"_id",
as:"dataa"}
}
现在我有两个收藏品
用户包含objectid
个用户"_id" : ObjectId("56ab6663d69d2d1100c074db"),
。assignedId
和任务,其中包含string
"assignedId":"56ab6663d69d2d1100c074db"
{ $project: { assignedId: {$toObjectId: "$assignedId"} }}
现在,当在两个集合中应用$ lookup时它不起作用,因为Id不匹配。
为此,我用Google搜索并找到了一个包含
的解决方案 assert: command failed: { "ok" : 0, "errmsg" : "invalid operator '$toObjectId'", "code" : 15999 } : aggregate failed
但是这个解决方案对我不起作用,它引发了一个错误:
$query = $mysqli->query($sql) or die;
$data = array();
// fetch data as array
while($row = $query->fetch_array()) {
$nestedData=array();
$nestedData[] = $row["email"];
$nestedData[] = $row["ipv4"];
$nestedData[] = $row["created"];
// $nestedData[] = '<a class="delete" href="#"><i class="fa fa-trash-o"></i></a>';
$nestedData[] = '<button type="button" class="delbtn btn btn-danger btn-xs" data-id="'.$row['id'].'">Delete</button>';
$nestedData[] = '<a class="btn btn-info btn-xs" href="newsModal.php?id='.$row['id'].'" data-toggle="modal" data-target="#newsModal" edit-id="'.$row['id'].'">Edit</a>';
$data[] = $nestedData;
}
请帮助我如何解决此问题。
由于
答案 0 :(得分:5)
在汇总管道中无法实现。没有方法可以转换类型。 你能改变&#34; assignedId&#34;的类型吗?在Tasks集合中的ObjectId? 否则你必须在代码中执行它,将ObjectId转换为String并在另一个查询中使用。