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

时间:2017-01-17 04:58:49

标签: mongodb join lookup

我想在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;
    }

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

由于

1 个答案:

答案 0 :(得分:5)

在汇总管道中无法实现。没有方法可以转换类型。 你能改变&#34; assignedId&#34;的类型吗?在Tasks集合中的ObjectId? 否则你必须在代码中执行它,将ObjectId转换为String并在另一个查询中使用。